Unityで非同期読み込みシーンを実現

1: UGUI を作成する

まず、LoginCanvas ログイン パネルの下に LoadScreen という名前のパネルを作成し、次に、loadScreen の下に Image コンポーネントを作成して背景画像を配置します。次に、lpadScreen の下にスライダーを作成し続けます。これはプログレス バーの読み込みに使用されます。名前を LoadSlider に変更しました。なぜ名前を変更する必要があるのでしょうか? 名前を変更する必要があるのは、いずれかの名前に会うためであり、しばらくしても忘れないようにするためです。何パーセントなど、進行状況バーの対応するテキストをロードする必要がある場合。次に、以下の Text テキスト コンポーネントも作成する必要があります。

 2: UGUI でコンポーネントを設定する

1. 画像コンポーネントの設定

2. LoadSliderプログレスバーコンポーネントの設定

プログレス バーの方向は通常、デフォルトで左から右です。もちろん、他のスタイルも設定できます。次の値の値は、プログレス バーをスライドさせるために使用されます。値の値が変更されると、プログレス バーも変更され、それらの値も変更されます。は同等です。

 

 塗りつぶし領域に設定した色は、プログレスバーの読み込み色と同じ赤です。上図で述べたように、赤に設定したため、読み込みプログレスバーは赤で塗りつぶされます。上記の色に対応する色を自分で選択してください。

 これはHandleであり、次の図に示すように、プログレス バーの動きの符号に相当します。必要ない場合は、Handle コンポーネントを無効にするか、自分で削除できます。下の画像はローディング画像を使用しているため、ローディングアイコンがあります。アイコンの位置は、下の図でマークされています。

 

 3. LoadText はテキスト コンポーネントの設定を読み込みます。

LoadSlider ロード進行状況バー コンポーネントで設定するため、設定したアンカー ポイントを中央に配置し、LoadTextロード テキスト コンポーネントのサイズを調整し、テキスト入力領域に 0% を入力し、さまざまなフォントやスタイル、サイズを調整します。配置と色。

4: 空のオブジェクトを作成する

空のオブジェクトを作成した後、ロード シーンを管理するために特別に使用される LoadManager という名前を付けました。

5: コードの実装

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

public class LoadManager : MonoBehaviour
{
    // Start is called before the first frame update

    //加载调过程显示内容
    public GameObject LoadScreen;
    //加载条
    public Slider LoadSlider;
    //进度条文本显示
    public Text LoadText;

    public void LoadNextScene()
    {

        //默认为0
        LoadSlider.value = 0;

        //开启协程
        StartCoroutine(LoadScene());
        //开启加载过程内容
        LoadScreen.SetActive(true);
    }
    // Update is called once per frame
    IEnumerator LoadScene()
    {
        //异步加载下一个场景
        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);
        //不要直接跳转到下一个场景
        operation.allowSceneActivation = false;
        //如果加载没有完成
        while (!operation.isDone)
        {
            //加载小于百分之90
            if(operation.progress < 0.9f)
            {
                LoadSlider.value = operation.progress;
                if(operation.progress==0.5f)
                    yield return new WaitForSeconds(1);
            }
            else
            {
                //大于百分之90直接默认加载完成
                LoadSlider.value = 1.0f;
            }
            //显示文本   转换成整数
            LoadText.text = (int)(LoadSlider.value * 100) + "%";

            if (LoadSlider.value >= 0.9)
            {
                //播放音效
               // LoadAudioSource.Play();

                //加载场景
                operation.allowSceneActivation = true;
            }
            yield return null;
        }
    }
}

6: Unity エンジンに戻る

 7:効果を実感する

Unity はシーンを非同期でロードします


 最終的な答え:

 なぜ非同期読み込みを使用するのでしょうか?

        非同期の利点: 高速で、メインスレッドから独立しています。

        短所: リソースがいつ準備できるかわからないため、呼び出しはさらに面倒です。最良の方法は、コールバックを使用することです。そのため、コールバックが大量に発生し、煩雑で、個人的には管理が不快に感じます。

非同期読み込みを使用すると、より美しく、少し高度な感じがします。同期読み込みは自動的に読み込まれます。速度は非同期ほど速くありませんが、管理は簡単です。

おすすめ

転載: blog.csdn.net/weixin_57813136/article/details/132270592