C# 参数异常:不允许空路径
我想通过以下代码访问Resources文件夹中的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
.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));