Добрый день! Есть код:
[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, но как исправить это - не понимаю.