2013-05-19 41 views
-1

我试图写在XNA一个漂亮的内容加载器,以避免单独加载每个资产。但是,我在描述目录位置时遇到了问题,因为文件操作的默认目录是exe的位置,但XNA的Content.Load使用Content文件夹的默认目录。只有包括在文件字符串C#后子目录

foreach (string subD in Directory.GetDirectories("..\\..\\..\\..\\Happy WorkerContent\\gfx\\", "*.*", SearchOption.AllDirectories)) 
{ 
    foreach (string s in Directory.GetFiles(subD)) 
    { 
     string file = Path.GetFileNameWithoutExtension(s); 
     if (Enum.IsDefined(typeof(Tex), file)) 
     { 
      Console.WriteLine(subD); 
      Console.WriteLine(file); 
      GXDict.Add(Path.GetFileNameWithoutExtension(s), GV.C_Game1.Content.Load<Texture2D>(subD + "\\" + file)); 
     } 
    } 
} 

我的错误是因为词表,例如, “........ \快乐WorkerContent \ GFX \层次的实体\地形”,但Content.Load预计“GFX \层次的实体\地形”。

我可以做类似subD.Substring(32),但这似乎凌乱,尤其是当我重新命名的任何文件夹或任何更新版本(不得在发布版本工作?)。有说:“我只希望这是以后的文件的一部分‘快乐WorkerContent’目录的好办法?

回答

0

你可以写返回以下特定目标字符串文本的方法。

然后如果你需要寻找一个不同的字符串,你只需要一个不同的目标字符串传递给方法

例如:

// Returns the contents of text following the target string, 
// or "" if the target string wasn't found. 

public static string ContentAfter(string text, string target) 
{ 
    int index = text.IndexOf(target); 

    if (index >= 0) 
     return text.Substring(index + target.Length); 
    else 
     return ""; 
} 

然后,你把它想:

string test = "..\\..\\..\\..\\Happy WorkerContent\\gfx\\whatever"; 
string target = "\\Happy WorkerContent\\"; 

string following = ContentAfter(test, target); 

这是行不通的那么大,如果你有两个字符串中的文本的目标字符串匹配。该方法将在第一比赛,其中包括课程的第二目标字符串后返回所有文本。

相关问题