Unity массив путаницы - PullRequest
       1

Unity массив путаницы

0 голосов
/ 07 декабря 2018

привет, я пытаюсь создать диалоговое окно с использованием массива, но у меня, похоже, есть небольшая проблема.вместо того, чтобы показывать разные строки в классе DialogHolder, он продолжает показывать DialogueManager.

Из моего понимания я хотел сделать так, чтобы DialogHolder содержал этот диалог, и у меня появилась идея сделать его примерно таким ->

[DialogHolder = DialogueManager]

но отображается только DailogueManager с тестовыми строками, которые я поместил, чтобы увидеть, изменится ли диалог

DailogHolder

public string dialogue;
private DialogueManager sentence;

public string[] NPC_name;
[TextArea(3, 10)]
public string[] dialogueLines;

void Start()
{
}

public void TriggerDialogue()
{
    FindObjectOfType<DialogueManager>().ShowDialogue(dialogueLines);
    FindObjectOfType<DialogueManager>().ShowName(NPC_name);
}

DialogueManager

//holds the text GameObject
public Text NPC_nameText;
public Text NPC_DialogueText;

public string[] names;
[TextArea(3, 10)]
public string[] dialogueLines;

public int currentlines;

void Start () {
    //lets the box types the char individual
    StopAllCoroutines();
}

void Update()
{
    StartDialog();
}

public void StartDialog()
{
   if (currentlines >= dialogueLines.Length)
    {
        currentlines = 0;
        EndDialogue();
        return;
    }
    NPC_DialogueText.text = "";

    StartCoroutine(TypeSentence());
}

public void ShowDialogue(string[] dialogueLines)
{
    NPC_DialogueText.text = dialogueLines[currentlines];
}

public void ShowName(string[] NPC_name)
{
    //selected a name
    NPC_nameText.text = NPC_name[0]; 
    //this part works for some reason since it's taken from the DialogHolder class
}

//pressed by a button
public void NextLine()
{
    currentlines++;
    StopAllCoroutines();
}

void EndDialogue()
{
    Debug.Log("End of Conversation");
}

IEnumerator TypeSentence()
{
    //types the characters for each sentence
    foreach (char letter in dialogueLines[currentlines].ToCharArray())
    {
        NPC_DialogueText.text += letter;
        yield return null;
    }
}

если я удаляю [размер] массива в классе DailogHolder, я получаю ошибку, в которой говорится, что [индекс массива выходит за пределы диапазона], но если я просто удаляю строки, которые были сохранены в этом массиве, это не имеет значения, так какон просто продолжает использовать массив в классе DialogueManager.

Пожалуйста, помогите, это работает, если я использую только одну строку, а не массив, но мне нужно научиться печатать несколько строк

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