シーン遷移

■概要

ゲームはタイトルやステージ、リザルトなどの数多くのシーンがあります。
Unityではシーンを「.unityファイル」として管理しており、
1つのプロジェクトに複数のシーンを作成し、それを切り替えることでゲームを実行しています。
シーンファイルは複数作成できますが、シーンの編集は1つしかできないので注意して下さい。
	
●リソースについて
	シーン自体は「unity」のファイルで分けますが、
	シーンで作成したプレハブ化したゲームオブジェクトやテクスチャ、3Dモデルなどの
	リソースはプロジェクトで共有して使用することが可能です。

	unity_0039

■シーンの新規作成方法

シーンは作成方法は主に二つあります。
「メニューから追加」と「ショートカットキー使用」です。

	①.メニューから追加
		メニューからの追加は上段メニューのFile => NewSceneで追加可能です。

	②.ショートカットキー使用
		シーン作成のショートカットキーは「Ctr + N」となっており、
		このショートカットを使用することで新しいシーンを作成できます。

どちらの手法で新しいシーンを作成する場合やシーンを切り替える場合
現在のシーンが修正中なら、保存の確認ウィンドウが表示されますので
保存、キャンセル、保存せずにコマンド(シーン作成 or 切り替え)の実行から選択します。

unity_0040

■シーンの複製

シーンを複製したい方法もシーンの新規作成と同じで
「メニューから追加」「ショートカットキー使用」の二つです。

	①.メニューから追加
		1-1.複製したいシーンファイルをクリックして選択状態にする
			
		1-2.上段メニューのEdit => Duplicateを選択する

	②.ショートカットキー使用
		2-1.複製したいシーンファイルをクリックして選択状態にする

		2-2.「ctr + D」を押す

■シーン遷移

シーンの遷移はスクリプトを使用して行います。

●手順
	①.プロジェクトを作成する

	②.「Ctr + S」を押して「Scene01.unity」として保存する

	③.Cubeオブジェクトを作成する。

	④.空のゲームオブジェクトを作成する

	⑤.スクリプトScene01を作成する

	⑥.以下のコードを記述する
		using UnityEngine;
		using System.Collections;
		using UnityEngine.SceneManagement; // 追加

		public class Scene01 : MonoBehaviour {
			// Use this for initialization
			void Start () {
			
			}
				
			// Update is called once per frame
			void Update () {
				// マウスを左クリックした瞬間
				if (Input.GetMouseButtonDown (0) == true) {
					// Unityバージョン 5.3以降
					// SceneManager.LoadScene ("Scene02");
			
					// Unityバージョン 5.3未満
					Application.LoadLevel("Scene02");
				}
			}
		}

	⑦.新しいシーンを作成する

	⑧.「Ctr + S」を押して「Scene02.unity」として保存する

	⑨.Sphereオブジェクトを作成する

	⑩.空のゲームオブジェクトを作成する

	⑪.スクリプトScene02を作成する

	⑫.以下のコードを記述する
		using UnityEngine;
		using System.Collections;
		using UnityEngine.SceneManagement; // 追加

		public class Scene02 : MonoBehaviour {

			// Use this for initialization
			void Start () {
					
			}
					
			// Update is called once per frame
			void Update () {
				// マウスを左クリックした瞬間
				if (Input.GetMouseButtonDown (0) == true) {
					// Unityバージョン 5.3以降
					// SceneManager.LoadScene ("Scene01");

					// Unityバージョン 5.3未満
					Application.LoadLevel("Scene01");
				}
			}
		}

	⑬.上段メニューのFile => BuildSettingsをクリックして
	  BuildSettingsウィンドウを開く
	
		unity_0041

	⑭.Scene01.unityファイルをBuildSettingsウィンドウにD&Dする

	⑮.Scene02.unityファイルをBuildSettingsウィンドウにD&Dする

	⑯.Build&Settingsの「Scenes In Build」の内容が
	  以下のSSと同じになっているかを確認する

		unity_0042

	⑰.Build&Settingsウィンドウを閉じる

	⑱.実行する
	  マウスの左クリックでScene01とScene02が切り替わる

●シーン切り替え関数
	シーン切り替え関数にはLoadLevelまたはLoadScene関数を使用します。
	どちらの関数を使用するかについての判断はUnityのバージョンで判断します。
	5.3以降のならLoadScene、5.3未満ならLoadLevelを使用します。
	※5.3以降でもLoadLevelは使用できますが、Unityが非推奨に指定しているので
	 使用しないほうがいいと思われます。

	・LoadLevel関数
		戻り値:
			なし
	
		引数:
			その1:
				シーンファイル名
	
			その2:
				シーンインデックス番号

		内容:
			シーンファイル名またはBuildSettingsで設定した
			シーンのインデックス番号を使用してシーンを切り替える
			※シーンのインデックス番号は「Scenes In Build」に追加した
			 シーンの右端にある数値

	・LoadScene関数
		戻り値:
			なし
		
		引数:
			その1:
				第一引数:
					シーンファイル名
			
				第二引数:
					切り替え方式(デフォルト引数 => Single)
		
			その2:
				第一引数:
					シーンインデックス番号
			
				第二引数:
					切り替え方式(デフォルト引数 => Single)
			
		内容:
			Unity5.3以降のバージョンで推奨されている
			シーン遷移用関数で、シーンファイル名またはBuildSettingsで設定した
			シーンのインデックス番号を使用してシーンを遷移させる
			この時に第二引数に切り替えの方法を指定できる
	
			※SceneManagerクラスを使用する場合以下の一文を
			 ソースファイルに追加して下さい。
			
				using UnityEngine.SceneManagement; // 追加
				
	・シーンの切り替え方式
		・Single
			現在のシーンを閉じてからシーンを読み込む

		・Additive
			現在のシーンに新たなシーンを追加する

		・SingleとAdditiveの違い
			Singleは現状のシーンを全て閉じて新しくシーンを開きますが、
			Additiveは現状のシーンを残したまま新しいシーンを開きます。
			ゲームにおいてメニュー画面やステータス画面などのような
			一時的に画面に表示する画面に対して有効な手法です。

	・シーンを閉じる
		Additiveを使用したシーンの読み込みの場合、
		どちらかのシーンを閉じる処理が必要になる時があります。
		例えばメニューシーンをAdditiveで読み込んだあとに
		メニューを閉じる処理を行ったらメニューシーンは閉じる必要があります。
		そのような時はUnloadScene関数を使用します。

		UnloadScene:
			戻り値:
				なし
		
			引数:
				その1:
					第一引数:
						シーンファイル名
			
				その2:
					第一引数:
						シーンインデックス番号
			
			内容:
				引数で指定されたシーンを閉じる

●Scenes In Buildへの追加
	シーン遷移を行うにはUnityにどのようなシーンを用意しているかを
	伝えて管理してもらう必要があります。
	その伝達方法として用意されているのが「Scenes In Build」です。
	Scenes In Buildへシーンファイルを追加することで
	Unityが追加されたシーンを管理してくれて、
	LoadLevelやLoadScene関数を使用できるようになります。
	「Scenes In Build」へ通知を行っていないシーンへの遷移はできませんので
	注意をして下さい。
	また、「Scenes In Build」のシーン番号「0」番はゲーム起動時に
	最初に起動されるシーンとなりますので「0」番のシーンの指定には気をつけてください。