メインコンテンツへスキップ

Unity - シーン非同期ロード

·229 文字
icysamon
著者
icysamon
電子工作・クリエイター

UI の設定
#

UI にこれらが必要です。

そして UI をこのようにします。

コード
#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using static System.Net.Mime.MediaTypeNames;


public class LoadManager : MonoBehaviour
{
    [Header("背景")] public GameObject BackGround;
    [Header("スライダー")] public Slider slider;
    [Header("テキスト")] public TextMeshProUGUI text;


    public void LoadNextLevel()
    {
        StartCoroutine(LoadLevel());
    }


    IEnumerator LoadLevel()
    {
        // operation = このシーンの番号 + 1
        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);

        while(!operation.isDone)
        {
            slider.value = operation.progress; // スライダー進度を設定

            text.text = operation.progress * 100 + "%"; // テキストで進度を表示します

            yield return null;
        }
    }
}

非同期ロードをする場合、関数 LoadNextLevel() を呼び出します。