gpt4 book ai didi

c# - 如何获取当前目录的路径? (ScriptableObject, UnityEditor.AssetDatabase)

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:59 24 4
gpt4 key购买 nike

对不起我的英语(谷歌翻译)。以下是在所选目录 (Assets/Resources/TestObject.asset) 中创建 Assets (ScriptableObject) 的代码片段:

[MenuItem("Assets/Create/Test Object")]
private static void CreateTestObject()
{
var testObject = ScriptableObject.CreateInstance<TestObject>();
AssetDatabase.CreateAsset(testObject, "Assets/Resources/TestObject.asset");
AssetDatabase.SaveAssets();
}

如何获取我所在目录的路径?为了不手动对路径进行硬编码,而是将此游戏对象保存在我调用该方法的同一文件夹中。


例如:

1) 我从 Assets/TestFolder/TestFolder2 调用方法。

2) 并在同一目录中创建一个 Assets (TestObject)。并且不会在 Assets /资源中创建。

综上所述,我需要通过菜单(Assets/Create/Test Object)获取我调用方法的目录路径。


另外:我可以在创建游戏对象后立即重命名它吗?与其他对象(脚本、文件夹等)一样。

预先感谢您的回答!


Example (screenshot):如何获得以红色突出显示的路径。我将通过菜单调用该方法(创建/测试对象)。在我选择的目录中 (Assets/TestFolder/TestFolder2)。 Assets 是在那里创建的。而不是在 Assets /资源中。我需要一个可以向我返回字符串的方法:Assets/TestFolder/TestFolder2

最佳答案

虽然 HedgehogNSK 的回答肯定是正确的,但您可能会发现自己处于这样一种情况,即您想在 Create 菜单上下文之外的当前文件夹中创建 Assets (例如,通过自定义 编辑器窗口)。在这种情况下,您可以使用编辑器在内部执行的相同方法,ProjectWindowUtil.CreateAsset(Object asset, string path)。这将从提供​​的对象创建 Assets ,并为用户提供重命名它的机会,就像 Create 下的默认条目一样。示例:

private static void CreateTestObject()
{
var testObject = ScriptableObject.CreateInstance<TestObject>();
// Do some custom initialization logic for testObject
ProjectWindowUtil.CreateAsset(testObject, "TestObject.asset");
}

ProjectWindowUtil 类没有记录,但是是public 并且可以很容易地在 Unity 引用源中找到 here .特别是 CreateAsset 已经存在了好几年,所以可以肯定地假设它不会消失。

关于c# - 如何获取当前目录的路径? (ScriptableObject, UnityEditor.AssetDatabase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com