【Unity】非同期でシーンを読み込もう!ロード画面の作り方

はじめに

ゲーム起動時やシーンを切り替える時など、読み込みに時間がかかるときはロード画面を表示するのが一般的です。

本記事では、ロード画面の作成から実装方法まで解説します。

ロード画面の実装方法

ロード画面の作成

ロード画面を作ります。自由に作ってもらって構いませんが、今回はわかりやすく以下のようにしました。

パネルにテキストを配置したものになります。

ロードするときに表示したいから、ロード画面はあらかじめ非表示にしておこう!

スクリプトの作成

ロードするシーンを読み込むためのスクリプトを作成します。このスクリプトには、ロードするシーンの名前やパス、読み込みの進捗状況を管理するための変数を定義します。

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

public class LoadScene : MonoBehaviour {

    // ロードするシーンの名前
    public string sceneName;

    // ロードの進捗状況を表示するUIなど
    public GameObject loadingUI;

    // ロードの進捗状況を管理するための変数
    private AsyncOperation async;

    // ロードを開始するメソッド
    public void StartLoad() {
        StartCoroutine(Load());
    }

    // コルーチンを使用してロードを実行するメソッド
    private IEnumerator Load() {
        // ロード画面を表示する
        loadingUI.SetActive(true);

        // シーンを非同期でロードする
        async = SceneManager.LoadSceneAsync(sceneName);

        // ロードが完了するまで待機する
        while (!async.isDone) {
            yield return null;
        }

        // ロード画面を非表示にする
        loadingUI.SetActive(false);
    }
}

作成したスクリプトを、ボタンにアタッチします。

ボタンコンポーネントには、スクリプトのStartLoad関数を設定します。

Scene Nameには、切り替え先のシーン名を入力し、Loading UIには、最初に作成したロード画面のオブジェクトを設定します。

実行

ロード時間が短いので一瞬ですが、ロード画面が表示されました!

おわりに

ロード画面の作り方の解説でした。今回紹介した方法で簡単に実装ができるので、ぜひ試してみましょう。データが増えてくると読み込み時間がかかるようになるため、ロード画面は必須となります。

ロード画面のアニメーションにおすすめなアセットはこちらです!

Unity
umiをフォローする
umi studio blog
タイトルとURLをコピーしました