unity, 由scriptableObject创建.asset
Posted wantnon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity, 由scriptableObject创建.asset相关的知识,希望对你有一定的参考价值。
由继承自scriptableObject的类X创建.asset文件。
假设类X的定义为:
[System.Serializable]
public class X : ScriptableObject {
public float m_a;
}
方法一:写代码创建。
#if UNITY_EDITOR
string path = "Assets/Resources/x.asset";
X scriptableObj = ScriptableObject.CreateInstance<X> ();
UnityEditor.AssetDatabase.CreateAsset (scriptableObj, path);
UnityEditor.AssetDatabase.SaveAssets ();
UnityEditor.AssetDatabase.Refresh();
#endif
(补充:对于如上创建出来的x.asset,加载写法是:
若用assetDatabase加载:
#if UNITY_EDITOR
UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Resources/x.asset");
#endif
若用Resource.Load加载:
Resources.Load("x");
)
方法二:通过菜单创建。
在类X前添加CreateAssetMenu属性,会自动在系统create菜单中添加对应的菜单项。
[CreateAssetMenu(fileName="x",menuName="(custom) X")]
[System.Serializable]
public class X : ScriptableObject {
public float m_a;
}
参考:
http://baba-s.hatenablog.com/entry/2015/06/13/000000
http://answers.unity3d.com/questions/1079664/how-do-i-use-the-createassetmenu-attribute.html
----------------补充:
若把[System.Serializable]改为[PreferBinarySerialization],则可实现二生成进制asset,对于unity编辑器中加载,内存占用和加载速度会有很大提升。但对于游戏包而言因为asset最终都会转成二进制,是一样的。
以上是关于unity, 由scriptableObject创建.asset的主要内容,如果未能解决你的问题,请参考以下文章
Unity学习使用Json长久储存ScriptableObject数据
Unity学习使用Json长久储存ScriptableObject数据
Unity 之 Excel表格转换为Unity用的文件格式 -- ScriptableObject,Json,XML 全部搞定