Unity/Csharp/シングルトン
提供: 初心者エンジニアの簡易メモ
通常シングルトン
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);を追加
mInstance = go.AddComponent<SampleManager>();
if (mInstance == null) {
GameObject go = new GameObject("SampleManager");
mInstance = go.AddComponent<SampleManager>();
+ DontDestroyOnLoad(go);
}
return mInstance;
