シーンを初期状態に戻したい(読み込んだ状態に戻したい)時は、
以下のように、自身のシーン名を指定した Application.LoadLevel()
を利用するとよさそう。
using UnityEngine;
public class Sample : MonoBehaviour {
void OnGUI() {
if( GUILayout.Button("Reload") ) {
Application.LoadLevel("Main"); // シーンの名前かインデックスを指定
}
}
}
ただし、シーンの再読み込みだと、
GameObjectはリセットされるけど、スクリプトは残ってしまいます。
僕がよくやる方法としては、
- インスタンスが複数になると困る部分はシングルトンパターンを使う
- リセットされたくないGameObjectには以下を指定
using UnityEngine;
public class Sample : MonoBehaviour {
void Awake () {
DontDestroyOnLoad(this); // シーン読み込みの際に破棄されなくなる
}
}
という感じで、プログラム全体を設計しておく。