概要
今回はスクリプトからシーンを読み込む処理を実装します。
下gifアニメは実装後の様子です。
開発環境
IDE:Rider
Unity:2020.3.42(LTS)
OS:Windows10
UnityEditor上の設定
Build SettingでSceneを加える
オブジェクトを作成して SceneControllerManagerスクリプトをアタッチする
実装のポイント
新規クラス SceneControllerManagerを作成しStartメソッド内でSceneを読み込む処理を実装します。Sceneを読み込む関数がコルーチンですが、ドキュメントにサンプルがあるので詰まりにくいです。
コード部分
SceneControllerManager
SceneControllerManager.cs
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.SceneManagement;
public class SceneControllerManager :SingletonMonobehaviour<SceneControllerManager>
{
public SceneName startingSceneName;
private IEnumerator Start()
{
yield return StartCoroutine(LoadSceneAndSetActive(startingSceneName.ToString()));
}
private IEnumerator Fade(float finalAlpha)
{
yield return null;
}
private IEnumerator LoadSceneAndSetActive(string sceneName)
{
yield return SceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Additive);
Scene newlyLoadedScene = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
SceneManager.SetActiveScene(newlyLoadedScene);
}
}
Enums
Enums.cs
public enum SceneName
{
Scene1_Farm,
}
参考
C#
Enum.ToString()
IEnumerator
Unity Editor コンポーネント
BuildSetting
Unity スクリプト
StartCoroutine
SceneManager.LoadSceneAsync
SceneManager.GetSceneAt
SceneManager.SetActive
その他
Section9 36 Create A Scene
github コミット分(個人確認用 privateなので見れません)