Код:
[SerializeField] private GameObject DialoguePanel;
[SerializeField] private Text DialogueText;
[SerializeField] private string[] Usually_dialogue;
private int index;
[SerializeField] private GameObject player;
[SerializeField] private GameObject contButton;
[SerializeField] private float WordSpeed;
private bool PlayerIsClose;
[SerializeField] private bool StopDialogue = false;
private void Start()
{
Quest_script = Quest_Panel.GetComponent<Quest>();
}
void Update()
{
if (PlayerIsClose)
{
if (Input.GetKeyDown(KeyCode.E) && StopDialogue)
{
StopDialogue = false;
zeroText();
DialoguePanel.SetActive(true);
StartCoroutine(Typing());
player.GetComponent<Player>().Stay(false);
}
if (DialogueText.text == Usually_dialogue[index])
contButton.SetActive(true);
}
}
public void zeroText()
{
DialogueText.text = "";
if (StopDialogue == true)
{
DialoguePanel.SetActive(false);
}
}
IEnumerator Typing()
{
foreach (char letter in Usually_dialogue[index].ToCharArray())
{
DialogueText.text += letter;
yield return new WaitForSeconds(WordSpeed);
}
}
public void NextLine()
{
contButton.SetActive(false);
Debug.Log(Usually_dialogue.Length);
if (index < Usually_dialogue.Length - 1)
{
index++;
zeroText();
StartCoroutine(Typing());
}
else
{
DialogueStop();
}
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
player = other.gameObject;
PlayerIsClose = true;
}
}
private void OnTriggerExit2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerIsClose = false;
zeroText();
}
}
public void DialogueStop()
{
zeroText();
StopDialogue = true;
}
В чем суть вопроса, в инспекторе я в массиве сделал 5 элементов (фото имеется), но при Debug.Log(Usually_dialogue.Length) и дальнейшем условии в Next Line() (выполняется кнопкой продолжения), программа выдает результат, Usually_dialogue.Length = 0.
Я не могу понять почему, вроде все должно работать, смотрел видео, там все работало
Ссылка на видео -
https://www.youtube.com/watch?v=1nFNOyCalzo