unity項目中保存數據的簡單解決方案
一、 Unity 提供的ScriptableObject
它可以將數據存儲在資源文件中,可以直接在unity面板中進行配置,裏面可以存儲預製體、圖片、音效、材質等多種格式資源,當然也支持自定義的Class配置,當數據量不是很大或者只是配置一些固定常用的數據參數時,是很高效便捷的存儲實現方式。
(想詳細瞭解的話可以參考https://blog.csdn.net/candycat1992/article/details/52181814,介紹的很好)
舉例:
/// <summary>
/// 場景環境光設置
/// </summary>
[Serializable] //備註:自定義類前必須有[Serializable]標識,否則配置無法識別。
public class SceneLightSettings
{
public int id;
public string name;
public GameObject scenePrefab;
public Material skyboxMat;
public Color ambientColor;
public Color fogColor;
}
/// <summary>
/// 創建配置文件
/// </summary>
/// <typeparam name="T"></typeparam>
[CreateAssetMenu(fileName = "Config", menuName = "Tools/Config")]
//添加此標籤就能在資源窗口右鍵創建Config資源文件
public class GameConfig : ScriptableObject
{
/// <summary>
/// 旋轉參數
/// </summary>
[Tooltip("旋轉參數")] //此標籤方便在編輯器內查看參數含義,編輯器內鼠標停留在參數名上即可
public float rotateParam = 100f;
/// <summary>
/// 場景列表
/// </summary>
[Tooltip("場景列表")]
public List< SceneLightSettings > sceneList = new List< SceneLightSettings>();
/// <summary>
/// 背景音樂
/// </summary>
[Tooltip("背景音樂")]
public AudioClip bgAudioClip;
}
備註:資源窗口右鍵找到"Tools/Config",創建Config文件哦誒之即可。配置好的文件可放於Resources目錄下,方便調用。
GameConfig gameInfoConfig = Resources.Load<GameConfig>("Config");
二、 UnityAssetStore插件EasyExcel
當數據量較大,編輯器內配置繁瑣且易出錯時,EasyExcel可以更好的解決配置問題。傳統的配置Excel表格也是策劃最熟悉方便的方式。EasyExcel可以在unity中導入使用excel數據,對每一個文件內sheet自動轉換導出,使用前建議打開例子文件,熟悉表格配置規則、導出設置和代碼讀取使用規則,上手不難。(詳情可參考https://assetstore.unity.com/packages/tools/integration/easyexcel-99352?locale=zh-CN)
代碼舉例:
public class ConfigMgr
{
private readonly EEDataManager _eeDataManager = new EEDataManager();
public List<EasyExcelGenerated.name> nameList = new List<EasyExcelGenerated.name>();
private ConfigMgr()
{
_eeDataManager.Load();
nameList = _eeDataManager.GetList<EasyExcelGenerated.name>();
}
}
以上兩種簡單的數據存儲方式基本上滿足項目需求了。