読者です 読者をやめる 読者になる 読者になる

196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

Unity 初心者がstaticを少し使いました

unityでstaticを使用した場合、シーンが破棄された場合でもそのデータが残っていました。まぁ周知の事実だとは思いますが笑 いつも通りメモ書きです。



例えば

public class PlayerDataKeeper {
  public static int i;
}

こんな感じなstatic変数を保持しているクラスがあったとします。


で、初めのシーンでこんな風にクラスの中で値を代入したとします。このクラスはどこでもOKです。

void Start(){
  PlayerDataKeeper.a=1;
}

この後、別のシーンを読み込んでその中のシーンで再び先ほどのクラスの変数を呼び出すと、先ほど代入した1はしっかり保持されています。以下のような感じで呼び出すと確認できます。これを呼び出すクラスは先ほど代入した際に呼び出したクラスでなくてもOK

void Start(){
  Debug.Log(PlayerDataKeeper.a);
}

これを軽く応用したものとしてシングルトンなクラスがあります。要はシーンを跨いで保持されるクラスのことです。昔少し調べました笑 詳しくはぐぐってくださいですが、よくこの形を使うのでメモしておきます。

public class PlayerDataKeeper {

	public static PlayerDataKeeper pInstance;

	public static PlayerDataKeeper Instance{
		get {

            if( pInstance == null ) pInstance = new PlayerDataKeeper();
			return pInstance;
		}
	}
        public int i;
}

//呼び出す時はこんな感じで使って
//PlayerDataKeeper pKeeper =PlayerDataKeeper.pInstance;
//こんな感じで呼べば読み書きが可能
// pKeeper.i=1;