Unityで前のシーンの情報を(無理やり)取得する
Unityは現在のシーン名は取得できるけど、一個前のシーン(つまりどのシーンから遷移してきたか)の取得がデフォルトでできない
色々試行錯誤していたのだけど、以下の方法に落ち着いた
1. データ格納用のクラスを作成
using UnityEngine; using System.Collections; public class Data { public readonly static Data Instance = new Data (); public string referer = string.Empty; }
2. 各シーン読み込み時にシーン名を格納する
例えばscene1というシーンだったら
using UnityEngine; using System.Collections public class scene1 : MonoBehaviour { void Start () { Data.Instance.referer = "scene1"; } . . .
例えばscene2というシーンだったら
using UnityEngine; using System.Collections public class scene2 : MonoBehaviour { void Start () { Data.Instance.referer = "scene2"; } . . .
3. 遷移元のシーンによって処理を変えたいシーンでシーン名を取得する
例えばscene3というシーンだったら
using UnityEngine; using System.Collections public class scene3 : MonoBehaviour { void Start () { if (Data.Instance.referer == "scene1") { 処理 1 } else if (Data.Instance.referer == "scene2") { 処理 2 } else { 処理 3 } Data.Instance.referer = "scene3"; } . . .
Reference
こちらのサイトを参考にさせていただきました
【Unity】シーン間でスコアを共有 まとめ - テラシュールブログ