使用ScriptableObject创建.asset文件
Posted Meteoric_cry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ScriptableObject创建.asset文件相关的知识,希望对你有一定的参考价值。
.asset一般用来存储一些配置,比如SDK初始化的相关参数。
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 直接获取数据。
如果在运行时需要修改数据,需要使用下面的
EditorUtility.SetDirty(CommonConfig.Instance);
AssetDatabase.SaveAssets();
以上是关于使用ScriptableObject创建.asset文件的主要内容,如果未能解决你的问题,请参考以下文章
Unity升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
Unity升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件