Unityに関連する記事です

ゲームシーンを複数作ったら、シーンの遷移を管理してゲームが最初から最後まで回るようにサイクルを作ります。
下記のようなイメージです。

タイトル画面 [spaceボタンを押下する]
    ↓
ゲーム画面(MainScene)
    ↓
結果表示画面(RusultScene) [spaceボタンを押下する]
   .押璽爛リア
  ◆.押璽爛ーバー
    ↓
タイトル画面

いずれのシーンも次のシーンへ遷移する際にspaceボタンを利用します。
それに基づいてスクリプトを作成していきます。

Projectタブ内のAssets -> Sceneフォルダを開いて、ゲームシーンをResultシーンに切り替えます。
Scriptフォルダを開いて右クリックをして、create -> C# scriptを選択し、新しいスクリプトを作成します。
名前は「SceneSelecter」にしてください。
下記の内容を書き込みます。

SceneSelecter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneSelecter : MonoBehaviour {
  
    private string sceneName;                 //  現在のゲームシーンを取得するための変数

    // Use this for initialization
    void Start () {
      sceneName = SceneManager.GetActiveScene().name;       //  現在のゲームシーンを取得して代入する
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetKey(KeyCode.Space)) {                    //  spaceボタンを押したときに、ゲームシーンを遷移する。
            switch(sceneName){                                //  遷移させるゲームシーンをsceneNameより決定する
                 case "Title":                                //  現在のシーンがTitleなら
                     SceneManager.LoadScene("Main");          //  Mainシーンへ遷移する
                     break;
                 case "Result":                               //  現在のシーンがResultなら
                     SceneManager.LoadScene("Title");         //  Titleシーンへ遷移する
                     break;
                 default:
                     break;
            }
        }
    }
}

SceneSelecterスクリプトをヒエラルキーのMasterオブジェクトにアタッチします。
同じく、TitleシーンのMasterオブジェクトにもアタッチします。

すでにSpaceStart.csがアタッチされている場合には、こちらのスクリプトでカバーできますので
SpaceStart.csをリムーブしてください。

ゲームを実行し、最初のタイトルシーンから最後のリザルトシーンまでいき
再度タイトルシーンに戻ることができればサイクルが回り完了です。


応用編(Enum型と型変換について学習する)


 Enum(列挙型)という機能を利用することで、シーン遷移時の文字列指定を直接書き込まなくて済むようにできます。
文字列による書き間違えを防ぎ、列挙型に登録してある範囲のシーン名のみを指定できるようになります。

 先ほどまではStartメソッド内でシーンの名前を文字列(string)で取得していましたが、それを型変換(キャスト)してEnum型にしておきます。

SceneSelecter.cs

 <= クリックすると開きます。


Enum.Parseメソッド


(EnumのType)Enum.Parse(typeof(EnumのType), String, Bool = false) 戻り値はEnumのType

 第1引数として文字列を変換したいEnum型を指定します。今回はSceneTypeを指定しています。
 第2引数にはEnumに変換する文字列(string)を指定します。この文字列と同じ名前のEnumに、第1引数に指定した型へ変換します。
 第3引数はオーバーロードになっていまして、文字列を変換する際に、大文字と小文字を区別して、そのままの形で変換するかどうかを設定します。
 指定しなければ初期値はfalseですので、大文字と小文字は区別されます。trueの場合には大文字と小文字は区別せずに変換できます。

 スクリプト中でも利用していますが、この処理は、SceneManager.GetActiveScene().nameによって取得した文字列(stirng)を
SceneTypeに変換して、その結果をsecneType変数へ戻して代入している処理になります。

sceneType = (SceneType)Enum.Parse(typeof(SceneType), SceneManager.GetActiveScene().name);

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます