脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

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】シーン間でスコアを共有 まとめ - テラシュールブログ