見出し画像

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

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

コメント

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。
とあるソフトウェアエンジニア
Unityで画面遷移をしてみる|Mizeee
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1