Ch 15. 데이터 세이브 & 로드

Date:     Updated:

카테고리:

태그:

케이디님의 [유니티 강좌] 리듬 게임 유튜브 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 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]);
  • StartOnEnable 로 변경하였다.
    • 스테이지 메뉴는 게임이 시작되면 비활되었다가 게임이 끝나고 메인메뉴로 돌아가거나 하면 다시 활성화된다. 따라서 음악을 다시 세팅하기 위해선 Start보다 OnEnable이 적절하다.
  • 스테이지 메뉴에서 보이는 해당 음악의 점수를 DB에서 갖고 오기.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 4 카테고리 내 다른 글 보러가기

댓글 남기기