由继承自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;
}
推荐使用第二种方法。