我正在为ScriptableObject添加自定义创建操作,如下所示:
[MenuItem("Assets/Create/FlowEngine/Character")]
private static void CreateCharacter()
{
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
string assetPath = path + "/New Character.asset";
FlowEngineCharacterData character = ScriptableObject.CreateInstance<FlowEngineCharacterData>();
AssetDatabase.CreateAsset(character, assetPath);
AssetDatabase.SaveAssets();
Selection.activeObject = character;
}
这与预期完全一致,但是这个和所有内置资产之间存在一个区别。当您创建它们时,它会自动以重命名“模式”启动。
我唯一可以找到的重命名资产的方法是直接重命名资产而不是启动UI重命名操作。
有什么方法可以复制这种行为吗?
答案 0 :(得分:2)
我找到了一个隐藏在其他名称空间中的答案:
[MenuItem("Assets/Create/FlowEngine/Character")]
private static void CreateCharacter()
{
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
string assetPath = path + "/New Character.asset";
FlowEngineCharacterData character = ScriptableObject.CreateInstance<FlowEngineCharacterData>();
ProjectWindowUtil.CreateAsset(character, assetPath);
}
请注意,ProjectWindowUtil
而不是AssetDatabase
。使用它可以在重命名模式&#39;中启动创建操作。