您好,我正在尝试使用数组制作一个对话框,但似乎有点问题。而不是显示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类中的数组。
请帮助,如果我仅使用一个字符串而不是一个数组,但是我需要学习如何打印多行