zoukankan      html  css  js  c++  java
  • 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最终都会转成二进制,是一样的。

  • 相关阅读:
    pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
    scrapy回调函数传递参数
    python发送邮件
    python开发部署时新增数据库中表的方法
    python更新数据库脚本三种方法
    python中json.loads,dumps,jsonify使用
    chmod 命令
    find
    find 命令
    locate 命令
  • 原文地址:https://www.cnblogs.com/wantnon/p/6131396.html
Copyright © 2011-2022 走看看