おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【Unity】シーン遷移の際に、シーンの状態を保持しておく超簡単な方法。

   f:id:bookreadkun:20190116093953p:plain



おはようございます。おーみんです。

 

現在UnityでRPGを作成中です。

今回の記事では「シーン遷移したときに、遷移前の情報を保持する方法」について書いていこうと思います。

 

RPGなどでフィールドを歩いている途中に敵と遭遇→戦闘シーンへ切り替わり→敵を倒した後にフィールドシーンに戻りますよね。

通常のシーン遷移だと遷移する際に前の情報は破棄されてしまうので、戦闘シーンからフィールドシーンへ戻ったときは再びオブジェクトは初期位置に戻ってしまうのです。

 

それではゲームとして成り立ちません・・・

 

ということで、解決していきましょう!

 

プログラムを以下に示します。

----------------------

using UnityEngine;

 

public class Singleton : MonoBehaviour{

    //インスタンスが存在するか?

    static bool existsInstance = false;

    void Awake(){

        if(existsInstance){

            Destroy(gameObject);

            return;

        }

 

        existsInstance = true;

        DontDestroyOnLoad(gameObject);

    }

}

----------------------

 

あとは空のゲームオブジェクトを作り、名前を適当に「Singleton」とし、保持したいオブジェクトをその中に入れていきます。

f:id:bookreadkun:20190116095558p:plain

↓↓

f:id:bookreadkun:20190116095624p:plain

 

以上で完成です。

以下のように戦闘シーンが終わった後もその場から再開することが出来るでしょう。