見出し画像

Unityで画面遷移をしてみる

1. Unityで画面遷移をしてみる

 Unityはゲームを効率よく開発するゲームエンジンの一つである。このツールを使用すると、ツール上でゲーム開発が可能である。

 今回は、画面遷移をUnityを使用してやってみようと思う。

 環境:Mac OS venetura
 Unityのバージョン:2022.3.15f1

2. Unityで画面遷移を実現しよう

2.1 新規プロジェクトを作成する

 まず、新規プロジェクトを作成する。Unity Hubを開き、「New Project」を押下する。

Unity Hubの画面

 次に、プロジェクトを作成する。
・All Templateから3D Coreを選択し、「Create Project」を選択する。
・Create projectを選択する。

新規プロジェクト作成画面

2.2 シーンを作成する

 遷移する画面のSceneを作成する。「File」から「New Scene」を選択し、新規のSceneを作成する。

新しいシーンを作成する様子

 「Basic (Build-in)」を選択し、「Create」を選択する。

テンプレート選択画面

 作成すると、Hierarchyに「Untitiled」というSceneが作成できる。名称を変更し、わかりやすい名前にする。Ctrl + sで保存画面を開く。

Hierarchyビューの様子

 Save AsにNewSceneと入力し、新しいシーンを作成する。

保存画面

 先ほどのシーンの名前が変更されていることを確認する。

NewSceneに変更された様子

2.3 もう一つシーンを作成する

 先ほどと同じ手順で、もう一つのシーンを作成する。筆者は、BaseSceneという名前で作成した。

 ここまでの操作内容を確認する。

(1) 新規プロジェクトを作成
(2) NewSceneとBaseSceneの二つのシーンを作成した。

 今回は、BaseSceneからNewSceneへ画面遷移することを目標とする。Assets/Scenesの中にあるシーンを確認する。

Scenesフォルダの様子

2.4 シーンを登録する

 次は、作成したSceneをUnityに登録する。「File」から「Build Settings」を選択する。

ファイルメニュー

 Build Settingsを開き、先ほど作成したSceneを選択し、Build Settingsにドラッグアンドドロップする。

Build Setting画面

 上記の通り、作成したSceneが登録できればOKである。

2.5 目印となるオブジェクトを配置する

 このままの状態だと、同じ画面のため、画面を遷移しても切り替わりがわからない。そこで、オブジェクトを配置して目印をつける。

 BaseSceneには、Cubeを配置する。Hierarchyの➕ボタンを選択し、から3D ObjectのCubeを選択する。

3D Object作成画面

 Cubeを選択すると、下記のようにCubeが配置されていることがわかる。

Cubeが作成された様子

 NewSceneには、Sphereを配置する。Hierarchyの➕ボタンを選択し、3DObjectからSphereを選択する。

Sphereを選択する様子

 選択すると、Sphereが作成される。

Sphereが作成された様子

2.6 C#スクリプトを作成する

 画面遷移の制御は、C#のスクリプトから行う。Projectビューで右クリックを押し、CreateからC# Scriptを選択する。

C# Scriptを作成する様子

 ファイル名は、SceneChangeとした。

C# Scriptの名称

 ファイルをダブルクリックすると、エディタが立ち上がる。初期状態のコードは以下のようになっている。

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

public class SceneChange : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 今回、画面遷移は、Start()にinvokeメソッドを追加して実現する。Unityにおいて、invokeとは、指定した時間遅延の後に実行するコードを指定するものである。今回は、invokeで3秒後に画面遷移を行うと記述する。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Usingを追加
using UnityEngine.SceneManagement;

public class SceneChange : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //3s後に画面遷移する
        Invoke("ChangeNewScene", 3.0f);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    void ChangeNewScene()
    {
        //NewSceneを呼び出す
        SceneManager.LoadScene("NewScene");
    }
}

 上記は、画面遷移のプログラムの記述例である。下記に処理の内容を振り返る。

(1) ゲームを開始するとStartメソッドを実行する
(2) Invokeを使用してゲームを開始して3秒後にChangeNewSceneメソッドを実行する。
(3) ChangeNewSceneメソッドを実行し、NewSceneをロードする。

2.7 Scriptをアタッチする

 作成したC#のスクリプトをシーンに読み込んで実行する。BaseSceneを開き、Game Objectを作成する。Unityでは、GameObjectにスクリプトなどを割り当てて実行することができる。 

 Hierarchyから➕ボタンを押して、「Create Empty」を選択する。

Hierarchyビュー

 選択すると、GameObjectが作成される。

GameObjectが作成された様子

 GameObjectを選択した状態で、Inspectorビューを確認すると、「Add Component」と書かれているボタンがある。そこを選択し、先ほど作成したScene Changeを選択する。検索欄に作成した名称を入れると、自動的に現れる。

Add Componentする様子

 選択すると、InspectorビューにScene Changeのスクリプトが登録される。

GameObjectにC#Scriptが設定された様子

2.8 実行して確かめよう

 準備は完了したので、実行して確かめてみましょう。BaseSceneを読み込んだ状態で、実行ボタンを押してみましょう。

実行ボタン

 実行すると、CubeのオブジェクトからSphereのオブジェクトに画面が遷移することがわかります。

3. 終わりに

 今回は、Unityでの簡単な画面遷移のやり方を手順立ててまとめた。より深く学ぶことで、例えば、ゲームタイトルからゲーム画面へ遷移するといったことも可能である。興味がある人は試してみてほしい。

この記事が気に入ったらサポートをしてみませんか?