画面遷移する3つの方法を具体的に実装してみる【Unityゲーム制作】

今回はUnityで画面遷移する方法を実装してみます。アクションゲームで1面をクリアしたら2面に行くみたいな感じですね。実装方法はいくつかあるのですが、今回は3つの方法を実際に実装して紹介していきます。

はじめに

まずはサンプルとなる画面を適当に作っていきます

Unityのヴァージョン

今回使用するのは「Unity 2020.3.5f1」ヴァージョン。2Dで作成していきます。

プロジェクト名は適当に「2DGamenChange」としています。

簡単な配置

プロジェクトが開いたら、UIからキャンパスグループを追加。

Canvasの下に「UI->画像」を選択。

追加した画像オブジェクトの名前を「BackGround」に変更。適当な色を設定しておきます。

もう一つ画像を追加して、ゴールを設定。画像は適当なものを設定。サイズもいい感じに変更。

ついでに、床とテキストも設定して下記みたいな感じに。この辺は無くても問題なし。

シーン切り替えで画面遷移

用意したシーンを「MainScene」に名前変更。もう一つシーンを作成して「NextScene」という名前に。

あとはスクリプトを作成してゴールボタンをクリックしたら次のシーンに移動するようにするだけ。スクリプト部分などの詳しい内容は下記の別記事で紹介しています。

アクティブ状態の切り替えで行う方法

次にアクティブ状態のオンとオフを利用して切り替える方法です。

ステージ用意

Canvasの下にStage1という名前で空のオブジェクトを追加。「BackGround」、「Goal」、「Text」の3つをまとめてStage1の配下に。その後、Stage1をコピーしてStage2を作成。Stage2の方は違いが分かりやすいようにテキストだけ変更しておきます。

アクティブ状態切り替え

初期ではStage2を非アクティブ(無効)にします。Stage1のゴールがクリックされたらStage2をアクティブ(有効)にしてStage1を非アクティブにします。

これも詳しくは下記記事で紹介しています。

位置の変更で切り替えを行う方法

最後は位置変更で画面遷移を行う方法です。

ステージ用意

コピーしたStage2の位置を重ならないように変更します。

シーンを見ると左のような感じです。実際のゲーム画面はカメラ範囲を制御して右のように。

次にStage1とStage2を新たに空オブジェクトを作成してStagesにまとめ、Goalは外に出しておきます。シーンやゲーム画面が上のようになっていない場合はCanvasの設定を確認。

切り替え方法について

ここでStagesに注目していきます。位置は全て初期値の0になっています。

試しに位置Xに-1200と入力してみます。カメラがいい感じに動いてStage2がゲーム画面に表示されればOKです。後はこれをゴールボタンを押した時に実行するように設定していきます。

Stagesの「コンポーネントを追加」から新しいスクリプトを作成。名前はMovePositionとしています。作成したスクリプトの中身は下記です。位置を変更するだけの簡単なスクリプトです。

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

public class MovePosition : MonoBehaviour
{
    public void ChangePosition()
    {
        this.transform.localPosition = new Vector2(-1200, 0);
    }
}

このスクリプトの関数をGoalをクリックした時のイベントで発動するように設定します。

実際に再生してみて想定通り動けばOK

最後に

ゲーム内容や規模などによってどの方法を使うのが良いか分かれると思います。

例えば、それぞれが完全に独立していたらシーンをわけた方が作るときに分かりやすいけど、そんなに大きくないゲームなら一つのシーンで完結していた方がいいのかも。

アクティブ状態を切り替えるのは前に戻らない場合は良いけど、頻繁に場面を切り替える場合は位置変更の方が良いのかなー。とか。とはいえ、全てがアクティブ状態だと動作が重くなるのかな?などなど色々な状況を想定しながら作ることになりそうですね。

もちろん、ここで紹介した方法以外にも色々ありますよね。

タイトルとURLをコピーしました