Проблема с внедрением диалоговой системы в Unity - PullRequest
0 голосов
/ 18 января 2020

Я пытаюсь сделать свой собственный визуальный роман в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...