Ch 15. 데이터 세이브 & 로드
카테고리: Unity Lesson 4
태그: Unity Game Engine
케이디님의 [유니티 강좌] 리듬 게임 유튜브 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
🚀 데이터 세이브 & 로드
빈 오브젝트 DataBase
를 만들고 거기에 📜DataBaseManager 를 붙임. 스테이지별로 점수를 저장할 것.
📜 DataBaseManager
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataBaseManager : MonoBehaviour
{
public int[] score; // 노래별 최고 점수들 이 배열에 저장
private void Start()
{
LoadScore();
}
public void SaveScore()
{
for(int i = 0; i < score.Length; i++)
PlayerPrefs.SetInt("Score1", score[i]);
}
public void LoadScore()
{
if (PlayerPrefs.HasKey("Score1"))
{
for (int i = 0; i < score.Length; i++)
PlayerPrefs.GetInt("Score1", score[i]);
}
}
}
📜Result
int currentSong = 0;
public void SetCurrentSong(int p_songNum) { currentSong = p_songNum; }
public void ShowResult()
{
//...
if (t_currentScore > theData.score[currentSong])
{
theData.score[currentSong] = t_currentScore;
theData.SaveScore();
}
결과창을 띄울 때, 기존에 저장되어 있던 최고 점수 theData.score[currentSong] 보다 이번 게임에서의 점수 t_currentScore 가 더 높다면 데이터베이스에 저장한다!
📜 GameManager
public void GameStart(int p_songNum, int p_bpm)
{
//..
result.SetCurrentSong(p_songNum);
게임이 시작되면 현재 노래가 뭔지 세팅
📜 StageMenu
private void OnEnable()
{
if (theData == null)
theData = FindObjectOfType<DataBaseManager>();
SettingSong();
theResult = FindObjectOfType<Result>();
}
void SettingSong()
{
txtSongName.text = songList[currentSong].name;
txtSongComposer.text = songList[currentSong].composer;
txtSongScore.text = string.Format("{0:#,##0}", theData.score[currentSong]);
- Start를 OnEnable 로 변경하였다.
- 스테이지 메뉴는 게임이 시작되면 비활되었다가 게임이 끝나고 메인메뉴로 돌아가거나 하면 다시 활성화된다. 따라서 음악을 다시 세팅하기 위해선 Start보다 OnEnable이 적절하다.
- 스테이지 메뉴에서 보이는 해당 음악의 점수를 DB에서 갖고 오기.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기