using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
[Serializable]
public class GameData
{
public int BGM_Volume = 0;
public int Effect_Volume = 0;
public int gold = 0;
public int hp = 10;
public float moveSpeed = 5f;
public List<MonsterData> monsterKillDatas;
public GameData(int _gold, int _hp, float _moveSpeed)
{
gold = _gold;
hp = _hp;
moveSpeed = _moveSpeed;
monsterKillDatas = new List<MonsterData>();
}
}
[Serializable]
public class MonsterData
{
public int index;
public string name;
public float moveSpeed;
public float rotationSpeed;
public string description;
public MonsterData(int index, string name, float moveSpeed, float rotationSpeed, string description)
{
this.index = index;
this.name = name;
this.moveSpeed = moveSpeed;
this.rotationSpeed = rotationSpeed;
this.description = description;
}
}
public class DataMgr : MonoBehaviour
{
static GameObject container;
static GameObject Container { get => container; }
static DataMgr instance;
public static DataMgr Instance
{
get
{
if (instance == null)
{
container = new GameObject();
container.name = "DataMgr";
instance = container.AddComponent(typeof(DataMgr)) as DataMgr;
instance.SetMonsterDataFromCSV();
DontDestroyOnLoad(container);
}
return instance;
}
}
GameData gameDatas;
public GameData GameData
{
get
{
if (gameDatas == null)
{
LoadGameData();
SaveGameData();
}
return gameDatas;
}
}
void InitGameData()
{
gameDatas = new GameData(100, 300, 5f);
gameDatas.monsterKillDatas.Add(new MonsterData(1, "피그미", 2f, 1f, "작은 괴물"));
gameDatas.monsterKillDatas.Add(new MonsterData(2, "바이킹", 2.2f, 1f, "용감한 괴물"));
}
public void SaveGameData()
{
InitGameData();
string toJsonData = JsonUtility.ToJson(gameDatas, true);
string filePath = Application.persistentDataPath + GameDataFileName;
File.WriteAllText(filePath, toJsonData);
}
public void LoadGameData()
{
string filePath = Application.persistentDataPath + GameDataFileName;
if (File.Exists(filePath))
{
string fromJsonData = File.ReadAllText(filePath);
gameDatas = JsonUtility.FromJson<GameData>(fromJsonData);
if (gameDatas == null)
{
InitGameData();
}
}
else
{
InitGameData();
}
}
댓글 영역