由继承自scriptableObject的类Bullet创建.asset文件。
假设类Bullet的定义为:
[System.Serializable] public class Bullet : ScriptableObject { public float speed ; }
方法一:写编辑器代码创建。
一般情况写在菜单栏中
using UnityEngine; using System.Collections; using UnityEditor; using System.IO; public class CreateAsset : Editor { // 在菜单栏创建功能项 [MenuItem("CreateAsset/Asset")] static void Create() { ScriptableObject bullet= ScriptableObject.CreateInstance<Bullet>(); if (!bullet) { return; } // 自定义资源保存路径 string path = Application.dataPath + "/BulletAeeet"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = string.Format("Assets/BulletAeeet/{0}.asset", (typeof(Bullet).ToString())); AssetDatabase.CreateAsset(bullet, path); AssetDatabase.SaveAssets (); AssetDatabase.Refresh(); } }
加载.asset文件的方法:
补充:对于如上创建出来的x.asset,加载写法是: 一、若用assetDatabase加载: #if UNITY_EDITOR UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Resources/x.asset"); #endif 二、若用Resource.Load加载: Resources.Load("x");
方法二:通过菜单创建。
在类Bullet前添加CreateAssetMenu属性,会自动在系统create菜单中添加对应的右键菜单项。
[CreateAssetMenu(fileName="子弹",menuName="创建子弹模板")] [System.Serializable] public class Bullet : ScriptableObject { public float speed; }
推荐使用第二种方法。