C# 参数异常:不允许空路径

C# 参数异常:不允许空路径,c#,unity3d,argumentexception,C#,Unity3d,Argumentexception,我想通过以下代码访问Resources文件夹中的.txt文件 void Start () { TextAsset txtAsset = (TextAsset)Resources.Load("Dialogue0", typeof(TextAsset)); string dialogue = txtAsset.text; lines = new List<DialogueLine>(); LoadDialogue(dialogue); } void

我想通过以下代码访问Resources文件夹中的
.txt
文件

void Start () {
    TextAsset txtAsset = (TextAsset)Resources.Load("Dialogue0", typeof(TextAsset));
    string dialogue = txtAsset.text;

    lines = new List<DialogueLine>();

    LoadDialogue(dialogue);
} 

void LoadDialogue(string filename)
{
    string line;
    StreamReader r = new StreamReader(filename);

    using (r)
    {
        do
        {
            line = r.ReadLine();
            if (line != null)
            {
                string[] lineData = line.Split('|');
                if (lineData[0] == "Player")
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], "", 0,0, "");
                    lineEntry.options = new string[lineData.Length - 1];
                    for (int i = 1; i < lineData.Length; i++)
                    {
                        lineEntry.options[i - 1] = lineData[i];
                    }
                    lines.Add(lineEntry);
                }
                else
                {
                    DialogueLine lineEntry = new DialogueLine(lineData[0], lineData[1], int.Parse(lineData[2]), int.Parse(lineData[3]), lineData[4]);
                    lines.Add(lineEntry);
                }
            }
        }
        while (line != null);
        r.Close();
    }
}

我已经找了一段时间了,但我还没有找到解决问题的办法

编辑:“Dialogue0.txt”的内容将用作文件名。因此,请检查Dialogue0.txt的内容。打印“对话”查找发生了什么。也许最后有一条空线

更新:

这可能是一个团结的问题。你可以阅读更多细节

对于其他情况,您可以尝试此方法或更改unity版本

 string content = lang.text;
 if(content == "")
 content = System.Text.Encoding.Default.GetString(lang.bytes);

我认为您应该使用扩展名“Dialogue0.txt”,而不仅仅是“Dialogue0”:


您始终可以打印出所有资源,以便从API级别进行检查

var allResources=Resources.LoadAll(“[PathRelativeToResourcesDir]”)


是否确认字符串对话=txtaste.text;对吗?因为对话将用作文件名。请检查“Dialogue0.txt”中的内容,它是否有空行?@RonTang“Dialogue0.txt”中没有空行,但它有内容。另外,我试着打印“对话”,但它是空的。唯一显示的是“UnityEngine.Debug:Log(Object)”,我试图打印“对话”,但它是空的。唯一显示的是“UnityEngine.Debug:Log(Object)”。虽然它有内容,但没有空行。我知道我现在的问题是什么。StreamReader将内容作为文件名读取,因为TextAssets中的“.text”已经读取了我的“Dialogue0.txt”的内容“因此,我需要对代码进行一些重大更改。我搜索到TextAssets和StreamReader不应该一起使用,因为它们都是读/写代码。虽然,我仍然有问题,因为在第一行之后,第二行没有显示。无论如何,谢谢你的帮助!我尝试了很多次,但它给了我一个错误“NullReferenceException:对象引用未设置为对象的实例”
 string content = lang.text;
 if(content == "")
 content = System.Text.Encoding.Default.GetString(lang.bytes);
TextAsset txtAsset = (TextAsset)Resources.Load("Dialogue0.txt", typeof(TextAsset));