ゲーム内のステージのクリア情報を保存したいですよね??
どこがクリアしたのかがわからないようじゃ最後のクリア画面に移動できません....
では,どうやっていくのか!!
static(静的メンバ)を使います!!
まずは,以下のコードを見てください
private static bool clear1,clear2;
〜省略〜
void OnCollisionEnter2D(Collision2D other){
if (other.gameObject.tag == "GameOver"){
SceneManager.LoadScene("GameOver");
// Debug.Log("hello");
}else if (other.gameObject.tag == "stage1"){
SceneManager.LoadScene("stage1");
}else if (other.gameObject.tag == "stage2"){
SceneManager.LoadScene("stage2");
}else if(other.gameObject.tag == "gameclear" && clear1 && clear2){
SceneManager.LoadScene("GameClear");
Debug.Log("クリア画面に移動");
}else if(other.gameObject.tag == "gameclear"){
if(SceneManager.GetActiveScene().name == "stage1"){
clear1 = true;
// Debug.Log("clear1 = " + clear1);
}
if(SceneManager.GetActiveScene().name == "stage2"){
clear2 = true;
// Debug.Log("clear2 = " + clear2);
}
SceneManager.LoadScene("Stages");
}
}
このようにしてシーンの切り替えをしています.
まず,上のクリアしたかどうかを変数clear1,2に入れています
これをゲームが実行している間は共有したいのですが,staticをつけないと,そもそも変更できません.
そこで,これをstaticにして変更,変数の共有をできるようにします.
静的メンバーはクラスごとに唯一つの実体を持ち、すべてのインスタンスの間で共有されます。
以下がstaticが説明されているサイトです.