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最终都会转成二进制,是一样的。

  • 相关阅读:
    程序怎么才能把自己的删除掉?
    Winsock编程入门1.初始化Winsock
    关于83版射雕英雄传
    一个感人的爱情故事(中英对照)
    NT系统的命令
    Delphi小巧的Windows NT服务程序源码
    更改Windows 登录屏幕保护程序
    画鬼最易
    濮水垂钓
    现代工作观
  • 原文地址:https://www.cnblogs.com/wantnon/p/6131396.html
Copyright © 2011-2022 走看看