此代码成功读入一个文本文件,然后允许它显示为GUI标签。我想知道如何为多个文本文件执行此操作?我不会像个别标签一样想要它们,我想的可能是阵列或列表,但我不确定。 谢谢你的帮助
using UnityEngine;
using System.Collections;
using System.IO;
public class OnClick : MonoBehaviour
{
public StreamReader reader = null;
public FileInfo theSourceFile = null;
public void Start()
{
theSourceFile = new FileInfo(Application.dataPath + "/puzzles.txt");
if (theSourceFile != null && theSourceFile.Exists)
reader = theSourceFile.OpenText();
if (reader == null)
{
Debug.Log("puzzles.txt not found or not readable");
}
else
{
while ((txt = reader.ReadLine()) != null)
{
Debug.Log("-->" + txt);
completeText += txt + "\n";
}
}
}
public void OnGUI()
{
if (Input.GetKey(KeyCode.Tab))
{
GUI.contentColor = Color.red;
GUI.Label(new Rect(1000, 50, 400, 400), completeText);
}
}
答案 0 :(得分:0)
在课堂上,添加一个字符串列表:
private List<string> _allFiles = new List<string>();
将Start()
分隔为另一种方法,并为每个文件调用该方法。在每个流程结束时,将completeText
变量添加到该列表中,如下所示:
public void Start()
{
theSourceFile = new FileInfo(Application.dataPath + "/puzzles.txt");
ProcessFile(theSourceFile);
// set theSourceFile to another file
// call ProcessFile(theSourceFile) again
}
private void ProcessFile(FileInfo file)
{
if (file != null && file.Exists)
reader = file.OpenText();
if (reader == null)
{
Debug.Log("puzzles.txt not found or not readable");
}
else
{
while ((txt = reader.ReadLine()) != null)
{
Debug.Log("-->" + txt);
completeText += txt + "\n";
}
_allFiles.Add(completeText);
}
}
最后,在OnGui()
方法中,围绕GUI.Label
来电添加循环。
int i = 1;
foreach(var file in _allFiles)
{
GUI.Label(new Rect(1000, 50 + (i * 400), 400, 400), file);
i++;
}
这假定您希望标签垂直显示,并且它们之间没有间隙。