Unity数组混乱

时间:2018-12-07 10:25:36

标签: c# arrays unity3d

您好,我正在尝试使用数组制作一个对话框,但似乎有点问题。而不是显示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类中的数组。

请帮助,如果我仅使用一个字符串而不是一个数组,但是我需要学习如何打印多行

0 个答案:

没有答案