Unity 通过ScriptableObject创建.asset文件

由继承自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;
}

推荐使用第二种方法。

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像(已失效)