シングルトンを使ってみた話

Unityでシングルトンを使ってみたくなりました。(というかもう使った)

どこに使おうかと言うと、シーン切り替えとBGM管理オブジェクトに使いたかったのです。

※これを書いた人はど素人なので間違ったこと書いているかもですが、あしからず…。

シングルトンについて調べてみる

さあ、使ってみよう、と思ってインターネットを見てみると………

なんか、シングルトンは良くないだとか、デメリットの方が多いだとか。あんまり肯定的な文章が見つからなかったんですよね…

なんでもグローバルなオブジェクトや変数、広範囲に依存関係を作るのは良くないそうですが、初心者の私からしたら ナントカManagerやら にいつでもアクセス出来るのは凄くいいことのようにしか思えなくてね。

色々調べてみたのですが、欠点を挙げているモノの方が圧倒的に多い気がしますが、前回のUnity1Weekに使ってみました。

実際に使ってみる

まず、シングルトン用のコードがこれです。色々見ながら書いたので、多分あっていると思います。​

中身としては、自分以外のオブジェクトが生成されたらそいつを消す、というスクリプト、のハズ…。

#region singleton
   private static Hogehoge _instance;

   public static Hogehoge instance{
		get{return _instance;}
	}
	
   private void Awake()
   {
       if (_instance!=null && _instance!=this){
           Destroy(this.gameObject);
       }else{
           _instance=this;
			DontDestroyOnLoad(gameObject);
       }
   }
#endregion


実際に使うときはシーン切り替え用のスクリプトで引数にシーン名を入れてそれをコルーチン内でロードする、といった形にしました。

使ってみての感想

実際に使ってみて、とても便利で今の自分的には大きなメリットがあるように感じました。まだ初心者な物であんまりデメリットを認識できていないというか。

今回のスクリプトでpublicにしたのは他から呼び出すための関数と読み込み状態を示す変数だけにしたので、そこまで他とくっついている感は無い気がします。まあ、まだよくわかっていないだけかもしれません。

ボチボチまた調べていきます。なんかネット曰く、あんまり使わない方がいいというか、使うなっ、みたいなところもあったので出現頻度は少なめになるように…努力していきます。

この記事が気に入ったらサポートをしてみませんか?