facebook twitter hatena line email

「Unity/Csharp/シングルトン」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(通常シングルトン)
(通常シングルトン)
行2: 行2:
 
  public class SampleManager {
 
  public class SampleManager {
 
     private static SampleManager mInstance;
 
     private static SampleManager mInstance;
     private SampleManager () {
+
     private SampleManager() {
 
     }
 
     }
 
     public static SampleManager Instance {
 
     public static SampleManager Instance {
 
         get {
 
         get {
             if( mInstance == null ) mInstance = new SampleManager();
+
             if (mInstance == null) mInstance = new SampleManager();
 
             return mInstance;
 
             return mInstance;
 
         }
 
         }

2021年9月23日 (木) 17:58時点における版

通常シングルトン

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);

参考

https://qiita.com/calmbooks/items/9cf32c6dd36b724b155e