シングルトンとは?
そのクラスのインスタンスが必ず1つであることを保証するデザインパターン
"○○○Manager"などのクラスを作成し、データの保存・管理に利用されることが多い
- 呼び出しが楽
- メンテナンスが楽
実例
Unityチュートリアルのサバイバルシューターのスコアをシングルトンで管理する。
シングルトンクラスの作成
EventManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EventManager : MonoBehaviour {
private static EventManager mInstance;
private int num = 0;
public static EventManager Instance {
get {
if( mInstance == null ) {
GameObject obj = new GameObject("EventManager");
mInstance = obj.AddComponent<EventManager>();
}
return mInstance;
}
set {
}
}
public void setScore( int n ) {
this.num = n;
}
public int getScore() {
return this.num;
}
}
使ってみる
スコアが更新されたら新しいスコアをsetする
EnemyHealth.cs
EventManager eventManager;
void Awake ()
{
eventManager = EventManager.Instance;
}
public void StartSinking ()
{
var currentScore = eventManager.getScore();
currentScore += scoreValue;
eventManager.setScore(currentScore);
}
ScoreManagerの中でスコアをgetする
ScoreManager.cs
EventManager eventManager;
void Awake ()
{
eventManager = EventManager.Instance;
}
void Update()
{
score = eventManager.getScore();
}