おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

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

   f:id:bookreadkun:20190116093953p:plain



おはようございます。おーみん(@Ooooooomin_365)です。

 

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

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

 

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

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

 

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

 

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

 

以下のサイトが凄く参考になりました。

wordpress.notargs.com

 

 

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

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

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

 

以上で完成です。

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

 

※他にもUnityに関して様々な記事を書いているのでぜひ!

 

【AnimationEventに関するエラー解決】

【Unity】「AnimationEvent has no function name specified!」のエラーを解決する。 - おーみんだよ。

 

【オブジェクトをフェードアウトさせる】

【Unity】オブジェクトをフェードアウトさせる簡単な方法。 - おーみんだよ。

 

【RPG戦闘シーンを作成】

【Unity】RPGでよく見る戦闘シーンを作成。 - おーみんだよ。