2面目の作成
sceneの複製
2面目を作成するベースとして最初に作成したsceneを利用します。ProjectウィンドウのScenesを選択し、gameScene上で右クリックから「Show in Explorer」を選択します。
エクスプローラーでgameScene.unityをコピーしてgameScene002.unityを作成します。Unityのエディタに戻ると、以下の画像のようにリロードを促されますので「Reload」をクリックします。
シーンが新たに読み込まれました。
このままではscene名がすべて表示されず、どちらがgameScene002か分かりません。このような場合、Projectウィンドウの右下のスライダーを右端に動かすことで各Sceneを大きく表示され、シーン名が読めるようになります。
またスライダーを左端に動かすことで、一覧表示することができます。
2面目の編集
1面目と同じでは、sceneが変更されたのかどうか分からないため、2面目を少し変更します。違いがわかれば良いので、どのように変更しても構いませんが、今回は下記画像のように床を1つ追加してみました。
プログラムの変更
ターゲットのハムスターを捕まえた際に2面に移動することにします。CharactorManager.csのOnCollisionEnter2Dメソッドを以下のように修正します。
public void OnCollisionEnter2D(Collision2D col)
{
// hamsterに触れた場合は削除
if (col.gameObject.name == "hamster")
{
this._collisionList.Remove(col.gameObject);
Destroy(col.gameObject);
// 2面に移動
if (Application.loadedLevelName == "gameScene")
{
Application.LoadLevel("gameScene002");
}
}
else if (col.gameObject.name == "ground" || col.gameObject.name == "floor")
{
this._collisionList.Add(col.gameObject);
this._isJumping = false;
}
}
面の移動処理が記述場所がCharactorManagerで相応しいのかというのは今後の課題としておきます。
処理としてはApplication.loadedLevelNameプロパティで現在のシーン名を取得しています。シーン名が一面(gameScene)であれば、Application.LoadLevelメソッドでシーンを変更します。変更するシーン名を引数で渡すことができます。
ただし、このままでプログラムを実行すると以下の画像のようなエラーが発生し、シーンの変更ができません。
gameScene002がbuild settingsに追加されていないため、シーンが移動できないようです。それではbuild settingsを変更していきましょう。


