변하는 데이터 : 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
}
}
'게임개발 > 게임 UI.UX 프로그래밍' 카테고리의 다른 글
데이터 저장하기 3 (0) | 2024.02.14 |
---|---|
데이터 저장하기2 (0) | 2024.02.14 |
DataManager 싱글톤 클래스 만들기 (0) | 2024.02.13 |
특정 ID, 최소 최대값 Data객체 검색하기 (0) | 2024.02.13 |
데이터 연동 스크롤뷰 (정적) 만들기 / 딕셔너리 (1) | 2024.02.13 |