Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -JavaScriptでシーン切り替え方法-

Unityでのシーンとはどういうポジションにあるのか? から 書くと
Project(全てのコンテンツがここに入っています)
|-Scene1
 |-Hierarchy
|-Scene2
 |-Hierarchy
こういう感じになります

まずは,テスト用に2つのシーンを作ってみます

プロジェクトを生成した時には,Hierarchyに Main Cameraのみが置かれています
Main CameraのBackgroundカラーをブルーにする
メニューの File→Save Scene as...を選択して,Scene1.unityで保存
そうすると,Projectに Scene1が生成されます

次に,Main CameraのBackgroundカラーをレッドにする
メニューの File→Save Scene as...を選択して,今度は Scene2.unityで保存
そうすると,Projectに Scene2が生成されます

この2つのシーンを実行ファイルに含めます
メニューの File→Build Settings...を選択
Project上の Scene1と Scene2を,上の空欄にドラッグ&ドロップ(なぜか,今表示しているシーンを追加するボタンしか無いので,この方法で)
シーンをクリックしながら動かすと入れ替える事ができますので,Scene1を 0にして下さい
この 0にセットしたシーンが最初に呼び出されます

この2つのシーンを,クリックする度に切り替えるようにしたいと思います

Projectの下にある Createボタン→JavaScriptをクリック
生成された NewBehaviourScriptをダブルクリックしてエディタを起動
function Update () {
	if(Input.GetMouseButtonDown(0)){
		//マウスがクリックされた
		if (Application.loadedLevelName == "Scene1") {
			//現在シーン1を表示中なので,シーン2に切り替える
			Application.LoadLevel("Scene2");
		} else {
			//現在シーン2を表示中なので,シーン1に切り替える
			Application.LoadLevel("Scene1");
		}
	}
}
シーンを切り替えるのは,
Application.LoadLevel(シーン名);
もしくは,
Application.LoadLevel(シーンインデックス番号);
です
インデックスは,ビルド設定時のダイアログに表示されていた番号です
まぁ,0で初期画面,ということのみに使用するのでしょう

今表示しているシーン名は,
Application.loadedLevelName
で取得可能です

最後に,記述したこのスクリプトを,Scene1,Scene2両方の Main Cameraの Inspectorにドラッグ&ドロップすれば完了です
ちなみに,Open Sceneで開かなくても,Project上のシーンをダブルクリックすれば開きます(私はずっとOpen Sceneしていたorz)

実行して,ウィンドウをクリックすると,シーンが切り替わり,青←→赤と色が変わるはずです

各シーンに Cubeオブジェクトとかを適当に置くと,それも一緒にオン・オフされます


TOPプログラマ専用Unityでゲーム開発