首页 > 解决方案 > 如何从 Unity 上的 C# 静态类获取当前文件夹

问题描述

我导入了一个 Unity 包,其中几个编辑器脚本依赖于RootPath静态类的属性:

public static class EditorUtils
{
    public static string RootPath => "Assets/HardcodedPath";
}

问题是这个路径是硬编码的,所以包的位置根本不能改变。我计划更改RootPath属性,以便它获取当前脚本位置并搜索具有给定模式的父文件夹。这样,即使在我自己的自定义包中(即在 Packages 文件夹而不是 Assets 文件夹中),我也可以使用这个包。

缺少的部分是我找不到从代码中获取此静态类文件夹位置的方法。谁能帮我这个?

标签: c#unity3d

解决方案


挖掘 AssetDatabase 并找到对您的脚本的引用。这应该返回你想要的。

public static class EditorUtils
{
    public static string RootPath
    {
        get
        {
            var g = AssetDatabase.FindAssets ( "t:Script EditorUtils" );
            return AssetDatabase.GUIDToAssetPath ( g [ 0 ] );
        }
    }
}

这也适用于包中的脚本。请记住更改EditorUtils为您的脚本名称。

这是相关的 Unity 文档。


推荐阅读