LoginSignup
26
20

More than 3 years have passed since last update.

Unity 全シーン管理マネージャーの作成

Last updated at Posted at 2018-11-16

Unity 全シーン管理マネージャーの作成

 Unityを実行するとき任意のシーンが呼び出され,そのシーンの中にあるマネージャーがただ一つ存在し続けるようにするための方法

Unity 2018.2.12.f.1 使用

参考 全てのシーンに存在し、かつ、一つしか存在してはいけないマネージャー的存在の実装方法【Unity】 - (:3[kanのメモ帳]

完成イメージは以下のgifを参照
nk1w7-wsfm5.gif

手順1 呼び出されるだけのシーンを作成する

カメラオブジェクトも削除しておく
スクリーンショット 2018-11-16 0.03.37.png

手順2 Sceneを追加する

スクリーンショット 2018-11-16 1.54.36.png

手順3 スクリプトを作成する

以下のスクリプトを作成する.それだけでよく何かのオブジェクトにアタッチする必要はない.
RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)でシーンのロード前に呼び出される.

ManagerSceneAutoLoader.cs

using UnityEngine;
using UnityEngine.SceneManagement;

public class ManagerSceneAutoLoader : MonoBehaviour {

    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    private static void LoadManagerScene(){
        string managerSceneName = "ManagerScene";

        //ManagerSceneが有効でないときに追加ロード
        if(!SceneManager.GetSceneByName(managerSceneName).IsValid()){

           SceneManager.LoadScene(managerSceneName, LoadSceneMode.Additive);

        }
    }
}

手順4 全シーンに適応したいマネージャーを用意

今回はスマホゲームによくある時間によって回復する行動ポイントを管理するマネージャを全シーンに配置する.
image.png

手順5 全シーン管理マネージャーをシーン遷移しても消えないようにする

DontDestroyOnLoadメソッドを使って消えないようにする.

DDManager.cs

using UnityEngine;

public class DDManager : MonoBehaviour {

    public GameObject gameObject;

    void Start () {
        DontDestroyOnLoad(gameObject);
    }

}

スクリーンショット 2018-11-16 2.09.23.png

これで実行すれば,実行されたところからManagerSceneが起動し,DDManagerによりActionPointManagerが残り,重複することなく全シーンに配置される.

26
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
20