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 ScriptableObject简单应用

Unity进阶:ScriptableObject使用指南

Unity学习使用Json长久储存ScriptableObject数据

Unity学习使用Json长久储存ScriptableObject数据

Unity 之 Excel表格转换为Unity用的文件格式 -- ScriptableObject,Json,XML 全部搞定

使 Unity 属性(如 [range])与 ScriptableObjects 中的继承一起工作