LoginSignup
0
0

Unityのシーン遷移を作る

Last updated at Posted at 2024-05-26

やりたいこと

  • ボタンを押したらシーン遷移する
  • Invokeを使って、数秒経ってからシーン遷移する

前提準備

Build Settingsの編集を行います。これが行われていないとシーン遷移できません。

※やり方

  1. メニューバーからFile>Build Settingsを開く

スクリーンショット 2024-05-26 19.49.04.png

  1. 上部の「Scenes In Build」にシーンをドラックアンドドロップする

スクリーンショット 2024-05-26 19.49.14.png

※特にこの後保存作業などはありません。追加できたらタブを閉じてしまってOKです。

ボタンを押したらシーン遷移する

スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; //これ必須です

public class Scene: MonoBehaviour {
    
    [SerializeField] private string _loadScene; //シーン名を記述

    public void SceneChange()
    {
        SceneManager.LoadScene(_loadScene);
    }

}

ボタンの方は、押された時に「Scene」が呼び出されるように設定します。
読み込みたいシーンはInspectorから編集可能です。使い回しをしたいときに便利そう。

もし使い回しする必要がない!という場合は、

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

public class Scene: MonoBehaviour {

    public void SceneChange()
    {
        SceneManager.LoadScene("読み込みたいシーン名");
    }

と、シーン名をダブルクォーテーションで囲って直接書けばOKです。

Invokeを使って、数秒経ってからシーン遷移する

フェードアウトやSEを聞かせるなど、何か演出をかける際に使えるといいと思います。

スクリプト

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

public class Scene: MonoBehaviour {

    [SerializeField] private string _loadScene;
    public int _delay; //遅延させたい秒数

    public void TimeLag()
    {
        Invoke("SceneChange", _delay);
    }

    public void SceneChange()
    {
        SceneManager.LoadScene(_loadScene);
    }

ボタンを押したときに呼び出す関数は「TimeLag」にしてください。
Inspectorに、読み込みたいシーン名と遅延させたい秒数を設定しておくのをお忘れなく。

スクリーンショット 2024-05-26 20.09.57.png

最後に

シーン遷移はほとんどのゲームで使うことになると思うので、すぐ書ける・わかりやすいように自分の型を作っておいて損はないなと感じています。
めざせ、使いやすいスクリプト!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0