.asset通常用來存儲一些配置,好比SDK初始化的相關參數。ide
using System.Collections.Generic; using UnityEngine; namespace XXX { [CreateAssetMenu(fileName="xxx", menuName="xxx")] public class CommonConfig : ScriptableObject { [HideInInspector] public List<string> Keys; [HideInInspector] public List<string> Values; [System.Serializable] public class Param { public string strA = ""; public string strB = ""; public string strC = ""; public string strD = ""; } public Param paramXXA = null; public Param paramXXB = null; private Dictionary<string, string> Map; private static CommonConfig instance; public static CommonConfig Instance { get { if (instance == null) { instance = (CommonConfig)ResourceManager.LoadAsset("assets/xxx.asset", typeof(CommonConfig)); } return instance; } } private void Awake() { UpdateData(); } private void UpdateData() { Map = new Dictionary<string, string>(Keys.Count); for (int i = 0; i < Keys.Count; i++) { Map.Add(Keys[i], Values[i]); } } public string Get(string key) { string value; if (Map.TryGetValue(key, out value)) { return value; } return key; } } }
定義爲public的變量就存儲在xxx.asset中,經過 CommonConfig.Instance.Get 直接獲取數據。spa
若是在運行時須要修改數據,須要使用下面的code
EditorUtility.SetDirty(CommonConfig.Instance);
AssetDatabase.SaveAssets();