工具类
using UnityEngine;
using UnityEditor;
using System.IO;
public static class ScriptableObjectUtility
{
public static void CreateAsset<T>() where T : ScriptableObject
{
T asset = ScriptableObject.CreateInstance<T>();
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
if( string.IsNullOrEmpty( path ) )
{
Debug.LogError("Not select files, select files first! ");
return;
}
else if (!string.IsNullOrEmpty(Path.GetExtension(path)))
{
path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), "");
}
string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/New" + typeof(T).ToString() + ".asset");
AssetDatabase.CreateAsset(asset, assetPathAndName);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
EditorUtility.FocusProjectWindow();
Selection.activeObject = asset;
}
}
菜单按钮
using UnityEngine;
using UnityEditor;
using System;
public class CreateAssets
{
[MenuItem("Assets/Create assets")]
public static void CreateAsset()
{
ScriptableObjectUtility.CreateAsset<AssetsScripts>();
}
}
被生成对象,ScriptableObject类型
using UnityEngine;
using UnityEditor;
using System;
public class AssetsScripts : ScriptableObject
{
public string playerName = "Yu Xikuo";
}