やりたいこと
- ボタンを押したらシーン遷移する
- Invokeを使って、数秒経ってからシーン遷移する
前提準備
Build Settingsの編集を行います。これが行われていないとシーン遷移できません。
※やり方
- メニューバーからFile>Build Settingsを開く
- 上部の「Scenes In Build」にシーンをドラックアンドドロップする
※特にこの後保存作業などはありません。追加できたらタブを閉じてしまって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に、読み込みたいシーン名と遅延させたい秒数を設定しておくのをお忘れなく。
最後に
シーン遷移はほとんどのゲームで使うことになると思うので、すぐ書ける・わかりやすいように自分の型を作っておいて損はないなと感じています。
めざせ、使いやすいスクリプト!