@Nepro

Как сделать так что бы после анимации был переход в другую сцену?

Привет! как сделать так что бы после анимации в сцене 1 был переход на сцену 2! Можно два способа мне кинуть? Один моментальный так скажем, а другой плавный или через экран какой то,типо загрузочный! Я новичок!!! Прошу более подробно описать, заранее спасибо всем
  • Вопрос задан
  • 18 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DrRen7
Ну начнем с простого это переход на другую сцену лучше почитать тут
using UnityEngine.SceneManagement;

static public class SceneWalker   //как пример что бы не создавать обьект со скриптом 
{
    static public void SceneChanger(string sceneName,int sceneNumber =-1) // создаем метод перехода по имени или номеру сцены 
    {
        if (sceneNumber>=0) SceneManager.LoadScene(sceneName);
        else SceneManager.LoadScene(sceneName);      
    }
}

в первой сцене создаем объект со скриптом

using UnityEngine;

public class SceneSelect : MonoBehaviour
{
    void Start()
    {
        Invoke(nameof(LoadNewScene), 2f); // через 2 секунды запуск метода LoadNewScene()
    }

    void LoadNewScene()
    {
        Debug.Log("Loding");
        SceneWalker.SceneChanger("Scene2",1);  // обращаетмя к реализации SceneWalker для загрузки новой сцены тут или имя или порядок
    }
}

далее надо обязательно добавить сцены в билд
67367661082c3525607411.png
ну а если нужно плавное затемнение, то перед LoadNewScene() можно вызвать другой метод который потом вызовет LoadNewScene()
Ну думаю с переходам с переходом понятен, просто надо почитать документацию. Теперь вопрос как через анимацию запустить LoadNewScene() подхода есть 2
создаю простую анимацию
1) модифицируем 2 скрипт
[SerializeField]GameObject box;   //обьект с анимацией 
    Animator _animator;  // аниматор что содержит анимацию
    void Start()
    {
        _animator = box.GetComponent<Animator>(); // получаем с обьекта компонент 
        float animTime = _animator.GetCurrentAnimatorStateInfo(0).length; // получаем время воспроизведения анимации 
        Invoke(nameof(LoadNewScene), animTime+0.1f); // запускам переход метод перехода на другую сцену через время анимации +0.1 сек 
    }

2) модифицируем 2 скрипт
using UnityEngine;

public class SceneSelect : MonoBehaviour
{
    public void LoadNewScene()
    {
        Debug.Log("Loading");
        SceneWalker.SceneChanger("Scene2",1);
    }
}

Прикрепляем его к объекту с анимацией выбираем. Выбираем анимацию и добавляем Event в конец анимации
673681c5bb905951609807.png
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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