Как я могу отложить мой скрипт для переключения сцен в Unity? - PullRequest
2 голосов
/ 25 июня 2019

У меня есть скрипт, который я подключил к кнопке в Unity, которая переключает сцену, но у меня также есть анимация, которую я хочу воспроизвести после нажатия кнопки.Кнопка запускает эту анимацию, но вы не видите анимацию, потому что сцена переключается слишком быстро.

Я пробовал использовать сопрограммы и таймеры, но у меня нет технических знаний, как их полностью реализовать..

Я бы предпочел использовать сопрограмму, если это возможно.Мой код:

    public void LoadNextScene()
    {
        int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
        SceneManager.LoadScene(currentSceneIndex + 1);
    }

    public void LoadMenuScene()
    {
        SceneManager.LoadScene(0);
    }
}

Я хочу нажать кнопку, затем воспроизвести анимацию и, наконец, сцена переключается.Не могли бы вы порекомендовать необходимые изменения кода для достижения моего желания?

1 Ответ

2 голосов
/ 25 июня 2019

Есть несколько способов сделать то, что вы описываете. Три наиболее популярных из них: Co-рутина, вызов и анимация.

Самым простым является invoke, вот пример вашего кода, реализованного в invoke. Просто позвоните в CallLoadNextScene.

public void CallLoadNextScene()
{
    Invoke("LoadNextScene",yourDelay);
}

public void LoadNextScene()
{
    int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
    SceneManager.LoadScene(currentSceneIndex + 1);
}

public void CallLoadMenu(int id)
{
    Invoke("LoadMenuScene",yourDelay);
}

public void LoadMenuScene()
{
    SceneManager.LoadScene(0);
}

Анимационные мероприятия, вероятно, были бы наиболее "профессиональным" способом сделать это, потому что тогда у вас будет лучшее делегирование обязанностей. Здесь является ссылкой на сайт Unity на тех.

Решение, использующее Co-Routines, будет во многом похоже на invoke, но поскольку вам не нужно много дополнительных функций, Invoke немного быстрее и проще в использовании.

Желаем удачи в вашем проекте! :)

...