Unity游戏中间场景加载目标场景

Unity游戏开发:中间场景加载目标场景

我们可以使用Unity的AsyncOperationSceneManager类来获取目标场景的加载状态,并在加载过程中更新进度条。以下是一个基本的例子:

  1. 脚本:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class SceneLoader : MonoBehaviour
{
    public string targetSceneName;  // 设置目标场景的名称
    public float delayTime = 3f;    // 设置中间场景的显示时间
    public Slider progressBar;      // 引用进度条

    void Start()
    {
        // 启动一个协程来延迟加载目标场景
        StartCoroutine(LoadTargetSceneWithDelay());
    }

    IEnumerator LoadTargetSceneWithDelay()
    {
        // 等待一段时间,用于展示中间场景
        yield return new WaitForSeconds(delayTime);

        // 异步加载目标场景
        AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(targetSceneName);

        // 禁止场景在加载完成后自动切换
        asyncLoad.allowSceneActivation = false;

        // 更新进度条
        while (!asyncLoad.isDone)
        {
            float progress = Mathf.Clamp01(asyncLoad.progress / 0.9f); // 0.9 是场景加载完成时的进度
            progressBar.value = progress;

            // 如果进度接近1,手动激活场景切换
            if (asyncLoad.progress >= 0.9f)
            {
                asyncLoad.allowSceneActivation = true;
            }

            yield return null;
        }
    }
}
  1. 在Unity编辑器中设置参数:

    • 在中间场景的脚本组件中,将进度条的Slider组件分配给 progressBar 变量。

这个脚本中,我们使用AsyncOperation来异步加载目标场景,并通过asyncLoad.progress获取加载进度。在加载过程中,我们将进度条的值设置为加载进度,并在加载接近完成时手动激活场景切换。

确保在场景中有一个UI元素(比如Slider)来充当进度条,并将其分配给progressBar变量。这样,我们就可以在加载目标场景时实时更新进度条。

评论

  1. zaihe
    11 月前
    2024-2-27 11:41:56

    写的很好,不错,感谢,学到了

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇