Я пытаюсь сделать свой собственный визуальный роман в Unity. Я сделал скрипт текстового менеджера для загрузки текстовых файлов и их правильного чтения и скрипт текстового поля для загрузки текста в текстовое поле. В своей иерархии я создал два объекта, один для скрипта текстового поля, а другой для менеджера диалогов. (DialogueParserObj) Моя цель состояла в том, чтобы поместить текстовый файл в текстовое поле, которое рассматривается как строковая переменная диалога в скрипте TextBox, чтобы вы могли видеть фактический текстовый файл в отмеченном мной диалоговом окне. Но он остается пустым, и я не знаю, почему, и я не получаю никаких ошибок.
Буду очень признателен за вашу помощь или другие предложения go о хорошо структурированной диалоговой системе!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DialogueBox : MonoBehaviour
{
TextManager parser;
public string dialogue;
int lineNum;
public GUIStyle customStyle;
void Start()
{
dialogue = "";
parser = GameObject.Find("DialogueParserObj").GetComponent<TextManager>();
lineNum = 0;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
{
dialogue = parser.GetContent(lineNum);
lineNum++;
}
}
void OnGUI()
{
dialogue = GUI.TextField(new Rect(100, 400, 600, 200), dialogue, customStyle);
}
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class TextManager : MonoBehaviour
{
string readPath;
List<string> stringList = new List<string>();
List<DialogueLine> lines = new List<DialogueLine>();
struct DialogueLine
{
public string name;
public string content;
public int pose;
public DialogueLine(string n, string c, int p)
{
name = n;
content = c;
pose = p;
}
}
void Start()
{
readPath = Application.dataPath + "/text.txt";
ReadFile(readPath);
}
public string GetName(int lineNumber)
{
if (lineNumber < lines.Count)
{
return lines[lineNumber].name;
}
return "";
}
public string GetContent(int lineNumber)
{
if (lineNumber < lines.Count)
{
return lines[lineNumber].content;
}
return "";
}
public int GePose(int lineNumber)
{
if (lineNumber < lines.Count)
{
return lines[lineNumber].pose;
}
return 0;
}
void ReadFile(string filePath)
{
StreamReader r = new StreamReader(filePath);
while (!r.EndOfStream)
{
string line = r.ReadLine();
if (line != null)
{
string[] lineValues = line.Split('|');
DialogueLine lineEntry = new DialogueLine(lineValues[0], lineValues[1], int.Parse (lineValues [2]));
stringList.Add(line);
}
}
r.Close();
}
![DialogueBoxProblem](https://i.stack.imgur.com/nnANZ.jpg)