セキュリティ系の勉強・その他開発メモとか雑談. Twitter, ブログカテゴリ一覧
本ブログはあくまでセキュリティに関する情報共有の一環として作成したものであり,公開されているシステム等に許可なく実行するなど、違法な行為を助長するものではありません.

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;