UnityフレームワークのConfigManager【Json設定ファイルの読み書き】
構成情報の読み取り
int id = 0;
ConfigManager.cheatConfig.GetCheats("TriggerJackPot" , id);
構成ファイル管理クラス: ConfigManager.cs
public static class ConfigManager
{
public static CheatConfig cheatConfig{
get; pricate set;}
public static void Initialize(){
UpdateConfig();
LoadAllConfig();
}
/// <summary>
/// 更新配置文件
/// <summary>
private static void UpdateConfig(){
JsonHelper.SaveJson(new CheatConfig());
}
/// <summary>
/// 加载所有的配置文件
/// <summary>
private static void UpdateConfig(){
cheatConfig = JsonHelper.ReadJson<CheatConfig>();
}
}
構成ファイルの読み取りと書き込み: JsonHelper.cs
public class CheatConfig
{
private static string PATH = Application.streamingAssetsPath + "/Config/";
/// <summary>
/// 保存Json
/// <summary>
public static void SaveJson<T>(T value) where T : class
{
string filename = string.Format("{0}{1}.json", PATH, typeof(T).Name);
if(!File.Exists(filename))
Directory.CreateDirectory(PATH);
else
File.Delete(filename);
using(StreamWriter sw = File.CreateText(filename))
{
sw.Write(JsonConvert.SerializeObject(value));
}
}
/// <summary>
/// 读取Json
/// <summary>
public static T ReadJson<T>(T value) where T : class
{
string filename = string.Format{
"{0}{1}.json", PATH, typeof(T).Name};
if(!File.Exists(filename))
{
Debug.logError("Json文件丢失");
return null;
}
string text = File.ReadAllText(filename);
T obj = JsonConvert.DeserializeObject<T>(text);
return obj;
}
}
構成ファイルに対応するクラス: CheatConfig.cs
public class CheatConfig
{
public Dictionary<string, string[][]> Cheat = new Dictionary<string, string[][]>{
{
"TiggerFreeGame", new String[][]{
new String[]{
"N", "Scatter", "T"},
new String[]{
"A", "PIC02", "PIC03"},
new String[]{
"PIC05", "Scatter", "A"},
new String[]{
"Q", "J", "PIC04"},
new String[]{
"K", "Scatter", "N"},
},
},
{
"BonusCoinFullGame", new String[][]{
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"},
new String[]{
"Coin"}
}
},
};
/// <summary>
/// 读取配置信息
/// <summary>
/// <param name="name">名字</param>
/// <param name="id">第几行</param>
/// <returns>返回一行中的所有数据</returns>
public string[] GetCheats(string name, int id){
if(Cheats.ContainKey(name)){
return Cheats[name][id];
}
else{
Debug.logErrorFormat("不存在{0}作弊表");
return default;
}
}
}
JSON 構成ファイル: CheatConfig.json
{
"Cheats":{
"TriggerJackPot":[
["N", "Scatter", "T"],
["A", "Wild", "PIC03"],
["PIC05", "Scatter", "A"],
["Q", "Wild", "PIC04"],
["K", "Scatter", "N"]
],
"BonusCoinFullGame":[
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"],
["Coin"]
]
}
}