ステージセレクト用シーンの作り方

前回までにステージに関する部分の作り方を説明してきました。ここまで来たらあとは作ったステージをゲームの流れの中に組み込めば良いので完成が見えてきましたね。あともう少しの辛抱です。

さて、それでステージは最初から順番にクリアしていく形でも良いのですが、今回はプレイヤーが自由にステージを選べるようにしてみようと思います。そこでここではステージセレクト用のシーンを作ってみましょう。


※今回はユニティちゃんがポータルに触れたら対応するステージに移動する、というタイプのステージ選択用シーンを作ります。ステージセレクト画面(=UI)からステージを選べるようにしたい方は、別のチュートリアルのページ「タイトル画面とステージセレクト画面の作り方」をご覧ください(今回のやり方よりも少し難しいです)。

スポンサーリンク

シーン移動用のポータルの作成

では、まずは任意のステージに移動するための「ポータル」(下図)を作ります。

ポータルの例

ポータルのゲームオブジェクトの作成

ポータルはゴールに似ているので、ゴールのゲームオブジェクトを少し改造して作ります。

新しいシーンを作り、ゴールのプレハブをヒエラルキーにドラッグ&ドロップしたらそれを右クリックして「プレハブを解凍」します。こうするとプレハブ関係が解除されるので、次の手順でポータルを作ってみてください。

  1. 名前を「Portal」に変更します。
  2. 「Goal」スクリプトコンポーネントを削除します。
  3. 新しいマテリアルを作り、「Goal」の部分のマテリアルを作ったときと同じ要領で「Stage1」等のテクスチャ(※自作してください)を設定したマテリアルを作ります。
  4. 子のQuadのマテリアルを手順3で作ったマテリアルに差し替えます。

できたらこれを適当なフォルダにドラッグ&ドロップしてプレハブ化しておきましょう。

ポータルのC#スクリプト

次にポータルのC#スクリプトを書きます。新しいC#スクリプトファイルを作り、名前を「Portal」にしたら次のコードを書いてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Portal : MonoBehaviour
{

  [SerializeField]
  int sceneIndex = 0;

  MoveSceneManager moveSceneManager;

  void Start()
  {
    moveSceneManager = GameObject.FindGameObjectWithTag("GameController").GetComponent<MoveSceneManager>();
  }

  void OnTriggerEnter(Collider other)
  {
    if (other.gameObject.CompareTag("Player"))
    {
      moveSceneManager.MoveToScene(sceneIndex);

      // 念のため、ポータルに触れた時にユニティちゃんを停止させておく
      KurokumaCharacterController player = other.GetComponent<KurokumaCharacterController>();
      player.StopCharacter();
    }
  }

}

書けたらこれをポータルのプレハブにアタッチしておいてください。

ポータルをシーンに配置してステージセレクト用シーンを作る

次に図のようにポータルをシーンに配置してステージセレクト用シーンを作りましょう。

ステージセレクト用シーンの作成例

※GameManager、カメラ、ユニティちゃんも忘れずに配置してください。

ポータルの「Scene Index」はタイトルが「0」、ステージ1が「2」、ステージ2が「3」…という風に設定してください(※インデックス1番はステージセレクト用シーン自身のインデックスです)。

シーンをビルド設定に登録する

そうしたら、これまでに作ったシーンをビルド設定に登録します。メニューバーの「ファイル」→「ビルド設定」からBuild Settingsウィンドウを開き、「ビルドに含まれるシーン」の欄にゲームに入れたいステージのシーンファイルをすべて登録しましょう。

あと次のページで作るタイトル画面用のシーンもついでに登録しておきたいので、とりあえず「くろくま基本アセット2」に含まれている「Title」シーン(KurokumaBasicAssets2/Scenesフォルダ内)をリストの先頭(0番)に登録しておいてください(※先頭のシーンがゲーム起動時に読み込まれます)。

つまり登録するシーンの順番は

  • 0番:タイトル
  • 1番:ステージセレクト
  • 2番以降:各ステージ

という感じにしてください。

テストプレイして動作を確認する

ここまでできたらテストプレイして動作を確認してみましょう。ユニティちゃんがポータルに触れたら対応するシーンに移動するでしょうか。きちんと動けば成功です。


次のページ→タイトル画面の作り方