Ну начнем с простого это переход на другую сцену лучше почитать
тут
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 для загрузки новой сцены тут или имя или порядок
}
}
далее надо обязательно добавить сцены в билд
ну а если нужно плавное затемнение, то перед 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 в конец анимации