System.IO.Directory.EnumerateDirectories(dir) 的 Unity .Net 语法

Unity .Net Syntax for System.IO.Directory.EnumerateDirectories(dir)

我有一些代码可以在我的 windows 表单项目中使用:

MatBaseIndicies = new Dictionary<string, int>();
string dir = Path.Combine(Data.BaseDir, "images");
dir = Path.Combine(dir, "equipment");
var subfolders = System.IO.Directory.EnumerateDirectories(dir);
int counter = 0;
foreach(string sub in subfolders)
{
   MatBaseIndicies.Add(Path.GetFileName(sub), counter);
   counter++;
}

基本上,此代码会读取所有子文件夹,然后将它们的名称作为键添加到字典中,以便可以通过整数查找它们。

如果你想知道这个的目的(如果你不知道,请跳过这一段):这是一个高度可定制的游戏的一部分,该游戏在启动时搜索文件夹以找到它的所有资产。当对象被序列化以进行保存时,字符串值被保存,这样 link 就不会丢失到相关资产中。当对象被反序列化时,对象只需要存储一个查找字符串的int(节省内存)

此代码无法在 Unity 5 中编译,因为 Unity 使用更旧版本的 .Net,其中不包含 "System.IO.Directory.EnumerateDirectories"

的定义

抱歉,我不确定确切的 .Net 版本号...

如何重写此代码以支持 Unity 5?

Unity 建立在 .Net 3.5 之上,正如您所指出的那样,这是一个更旧的版本。

不过您确实有一个选项,Directory.GetDirectories 函数会给您(几乎)相同的结果。