@Gera01
Unity, С# и больше ничего.

Почему код вылетает?

Добрый день! Есть код:
[SerializeField] private GameObject _loadPanel;
    [SerializeField] private GameObject _backLoadPanel;


    public void SmoothLoadByCutScene(Scene scene)
    {
        StartCoroutine(SmoothLoad(scene));
    }

    private IEnumerator PlayLine(GameObject _lineObject)
    {
        if (_lineObject.TryGetComponent(out Playable playable))
        {
            _lineObject.SetActive(true);
            playable.Play();

            while (!playable.IsDone())
            {
                yield return new WaitForEndOfFrame();
            }

            _lineObject.SetActive(false);
        }
    }

    public IEnumerator SmoothLoad(Scene scene)
    {
        StartCoroutine(PlayLine(_loadPanel));

        while (!_loadPanel.GetComponent<Playable>().IsDone())
        {
            yield return new WaitForEndOfFrame();
        }

        SceneManager.LoadScene(scene.name);
    }

    public IEnumerator SmoothLoad(GameObject playable)
    {
        if (TryGetComponent(out Playable timeLine))
        {
            StartCoroutine(PlayLine(_loadPanel));

            while (!_loadPanel.GetComponent<Playable>().IsDone())
            {
                yield return new WaitForEndOfFrame();
            }

            playable.SetActive(true);
            timeLine.Play();

            StartCoroutine(PlayLine(_backLoadPanel));
        }
    }


Есть таймлиния плавной загрузки (она меняет от 0 прозрачность до 100) и линия которая делает точно так же, но наоборот. Вопрос в том, как сделать так, чтобы оно все работало и не вылетало. Как я понимаю все тормозит цикл в PlayLine, но как исправить это - не понимаю.
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
Maxim_Vasiliev313
@Maxim_Vasiliev313
C# программист, сетевой инженер, web - разработчик
У Вас бесконечный цикл, вот и вылетает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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