如何在Unity C#WebGL中读取内部TXT文件



我搜索了Reddit、Youtube、Google和Stackoverflow,但找不到问题的答案/解决方案。因此,我正在发帖。

我正在使用Unity构建一个应用程序。在这个应用程序中,我有一个内部TXT文件,它被读取并解析为不同的UI文本元素。我的系统完全可以在Unity编辑器中找到,但当我将应用程序构建为WebGL时,它不起作用。生成成功,但UI文本元素未更新。我怀疑TXT文件不是用WebGL构建的,或者WebGL需要不同的方式来读取TXT文件。我能得到一些关于我做错了什么以及如何解决这个问题的帮助吗?

public void LoadInfoDoc()
{
if (infoDoc != null)
{
infoDocLines = (infoDoc.text.Split('n'));
int temp = infoDocLines.Length;
if (temp == 1)
{
Debug.Log("The document was loaded but the lines have not been read correctly.");
}
else
{
//Debug.Log("Loaded text file correctly. File has " + infoDocLines.Length + " entries.");
for (int i = 0; i < infoDocLines.Length; i++)
{
string tempStrHelpNum = infoDocLines[i].Substring(0, cutLength); //tempStr is ussed to save the first 2 letters of each info
string tempStrFullText = infoDocLines[i].ToString();
tempStrFullText = tempStrFullText.Remove(0, cutLength);
tempStrFullText = tempStrFullText.TrimStart();
int tempInt = i;
SortHelpInfo(tempStrHelpNum, tempInt, tempStrFullText);
//PrintLinesDEV(i);
}              
}
}
else
{
Debug.Log("Document was not assigned correctly");
}
}
private void SortHelpInfo(string helpNum, int tempInt, string tempStrFullText)
{
switch (helpNum)
{
case "01.0":     
helpList01.Add(tempStrFullText);
break;
case "02.0":
helpList02.Add(tempStrFullText);
break;
case "03.0":
helpList03.Add(tempStrFullText);
break;
case "04.0":
helpList04.Add(tempStrFullText);
break;
case "05.0":
helpList05.Add(tempStrFullText);
break;
case "06.0":
helpList06.Add(tempStrFullText);
break;
case "07.0":
helpList07.Add(tempStrFullText);
break;
case "08.0":
helpList08.Add(tempStrFullText);
break;
case "09.0":
helpList09.Add(tempStrFullText);
break;
case "10.0":
helpList10.Add(tempStrFullText);
break;
case "11.0":
helpList11.Add(tempStrFullText);
break;

case "12.0":
helpList12.Add(tempStrFullText);
break;
case "99.9":
//Used to allow a gap in the document
break;
default:
Debug.Log("There was an issue when sorting the info lines. Its for"+ helpNum);
break;
}
}

当Unity构建项目时,它并不包括项目层次结构中的每个对象。如果是这样的话,你的项目会包括很多不必要的对象和脚本,而这些对象和脚本你不会在场景中使用。因此,如果你从一个路径(例如文本文件(加载脚本中的一个对象,它将不会被包括在内,因为unity不会检查加载对象等的整个代码。

确保包含文本文件/材质/网格的一种方法是将其放置在Resources文件夹中,放置在该文件夹中的每个对象也将包含在构建中。资源文件夹中的对象可以使用Resources.Load访问。但是,将所有内容都包含在资源文件夹中并不是最佳选择,因为启动应用程序时,将始终加载此文件夹中包含的每个对象。通过这种方式,您可以将大量不必要的数据加载到内存中。另一种方法是使用AssetBundles,AssetBundles更灵活,可以在运行时加载,这样就不会增加内存。Assetbundle可以用AssetBundle.LoadFromFile加载。Unity创建了一个关于何时以及如何使用资源和Assetbundle的指南。我建议你看一下。

最新更新