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

时间:2017-08-20 20:21:50

标签: c# unity3d unity5 unity2d unity-editor

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

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

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

例如:

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

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

总而言之,我需要通过菜单( Assets / Create / Test Object )获取我调用该方法的目录的路径。

此外:创建后可以立即重命名GameObject吗?与其他对象(脚本,文件夹等)一样。

提前感谢您的回答!

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

2 个答案:

答案 0 :(得分:0)

System.Environment类具有静态CurrentDirectory属性。

答案 1 :(得分:0)

使用[CreateAssetMenu]来创建ScriptableObject,而不是[MenuItem]
当您使用CreateAssetMenu属性时,它会向Assets-> Create添加选项,从而在当前文件夹中创建对象。

[CreateAssetMenu(menuName = "MyApp/TestClass")]
public class TestClass: ScriptableObject
{
}