「Unity/Csharp/シングルトン」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→MonoBehaviourを使ったシングルトン) |
(→MonoBehaviourを使ったシングルトン) |
||
行49: | 行49: | ||
もしくは、クラス内に、DontDestroyOnLoad(go);を追加 | もしくは、クラス内に、DontDestroyOnLoad(go);を追加 | ||
<pre> | <pre> | ||
− | |||
− | |||
if (mInstance == null) { | if (mInstance == null) { | ||
GameObject go = new GameObject("SampleManager"); | GameObject go = new GameObject("SampleManager"); |
2022年12月7日 (水) 17:33時点における最新版
通常シングルトン
public class SampleManager { private static SampleManager mInstance; private SampleManager() { } public static SampleManager Instance { get { if (mInstance == null) mInstance = new SampleManager(); return mInstance; } } }
通常シングルトンでMonoBehaviourを継承しているとプロパティが設定取得できなくなる
MonoBehaviourを使ったシングルトン
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SampleManager : MonoBehaviour { private static SampleManager mInstance; public int x = 1; private SampleManager () { } public static SampleManager Instance { get { if (mInstance == null) { GameObject go = new GameObject("SampleManager"); mInstance = go.AddComponent<SampleManager>(); } return mInstance; } } void Start () { } void Update () { } }
使用方法
SampleManager manager = SampleManager.Instance; Debug.Log("x=" + manager.x);
シーン遷移しても使いたい場合
void Start () { DontDestroyOnLoad(this); }
もしくは、クラス内に、DontDestroyOnLoad(go);を追加
if (mInstance == null) { GameObject go = new GameObject("SampleManager"); mInstance = go.AddComponent<SampleManager>(); + DontDestroyOnLoad(go); } return mInstance;