본문 바로가기
게임개발/게임 UI.UX 프로그래밍

데이터 저장하기 1

by pudding81 2024. 2. 14.

변하는 데이터 : Info

저장 / 불러오기

사용자에 의해서 변하는 데이터

어떤정보들을 저장할래

파일로저장

정보들 (묶는다 : class -> 객체 )

객체 -> 문자열 -> 파일 (직렬화)

XXXInfo.cs

MissionInfo.cs

- 변수명 달라도 된다

- public

- 생성자 필요

InfoManager.cs (싱글톤)

객체를 만들어서 넣어야함

string json = JsonConvert.SerializeObject(객체)

문자열을 파일로 저장 File.WriteAllText(path, json)

Application.persistentDataPath

C:\Users\<user>\AppData\LocalLow\<company name>.

-------------------------------------------------------------------------------------------

변하지 않는 데이터 : Data

- 우리 게임에 반드시 필요한 데이터

- 빌드시 들고가는 데이터

Resources폴더에 넣고있음 <<

엑셀 -> JSON -> 역직렬화 (class -> 객체)

XXXData

mission_data.xls

mission_data.json

MissionData.cs (역직렬화 대상 클래스)

DataManager.cs (싱글톤)

MissionData클래스 맴버 정의

public json(엑셀)변수형식, 변수명

- 생성자 필요 없음

- new (.Net JSON이 해주니깐)

T타입 변수 = JsonConvert.DeserializeObject<T>(json);

문자열 -> 객체

변수 : MissionData객체 (인스턴스)

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


    public class MissionInfo
    {
        public int id;
        public int progress;
        public int state;
        


         //생성자 필요함
        public MissionInfo(int id, int progress, int state)
        {
            this.id = id;
            this.progress = progress;
            this.state = state;
        }

    }

 

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor.SceneManagement;
using UnityEngine;

public class Test7Main : MonoBehaviour
{


    void Start()
    {
        DataManager.Instance.LoadMissionData();
        DataManager.Instance.LoadRewardData();
        this.UpdateMissionCellView(1000);


        //파일저장경로를 지정해줌
        string path = Application.persistentDataPath + "/mission_info.json";
        
        Debug.Log(path);
        //-> C:/Users/WD/AppData/LocalLow/DefaultCompany/LearnUGUI/mission_info.json


        //인포에 데이터 저장하기
        MissionInfo info = new MissionInfo(102, 1, 0);
        //직렬화 
        string json = JsonConvert.SerializeObject(info);
        Debug.Log(json);
        //저장 위치, 인포 
        File.WriteAllText(path, json);

    }
    private void UpdateMissionCellView(int id)
    {


        MissionData missionData = DataManager.Instance.GetMissionData(id);
        RewardData rewardData =DataManager.Instance.GetRewardData(missionData.reward_id);

      
        string missionDesc = string.Format(missionData.desc, missionData.goal);
        Debug.LogFormat("{0}, {1}, {2}, {3}, {4}", missionData.sprite_name, missionData.name, missionDesc, rewardData.sprite_name, missionData.reward_amount);

        //=> 미션아이콘이름, 미션명, 미션DESC, 보상아이콘이름, 보상수량 출력
        //icon_coins_pouch, Collect Golds, Collect 10000 Golds, icon_color_energy, 1


    }


}