@Korsakovlev

Почему Length массива 0, хотя у него есть элементы?

Код:
[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
63dcb3b6506d6147747077.png
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MifanyaRa
Может быть всё банально - на сцене два объекта с этим скриптом. В одном массив не пустой, в другом пустой.

Попробуй поискать в окне Hierary в строке поиска сверху окна так t:<Имя Скрипта>

P.S. вводить символы <> не нужно. Например, если бы скрипт назывался DialogSystem, то поисковый запрос выглядел бы так t:DialogSystem
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы