おはようございます。おーみんです。
現在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」とし、保持したいオブジェクトをその中に入れていきます。
↓↓
以上で完成です。
以下のように戦闘シーンが終わった後もその場から再開することが出来るでしょう。
そしてこちらは勝利パターン。
— 超おーみん@Unityでゲーム作ってます (@Ooooooomin_365) 2019年1月15日
昨日までは勝利後にフィールドシーンに戻ったらオブジェクトの位置が初期位置に戻ってしまっていたんだけど、しっかり元のシーンの状態を残したまま戻れるようになった。
cubeも透明化しているのでFFみたく歩いてたらランダムで敵に遭遇する感じも出せてる。#unity pic.twitter.com/SKyh04OSjH