首页 > 其他分享 >Unity 切换场景前的进度条效果

Unity 切换场景前的进度条效果

时间:2024-03-25 12:58:25浏览次数:34  
标签:场景 进度条 Unity progress using operation public 加载

废话不多说上代码,欢迎对 Unity有兴趣的伙伴一起探讨学习。

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

// 创建一个名为JDT的MonoBehaviour脚本,它可以附加到游戏对象上并在Unity引擎中运行
public class JDT : MonoBehaviour
{
    // 公开游戏对象变量,用于加载画面的显示与隐藏
    public GameObject loadScreen;

    // 公开Slider组件变量,用于显示加载进度
    public Slider slider;

    // 公开TextMeshProUGUI文本组件变量,用于显示百分比数字
    public TextMeshProUGUI text;

    // 定义一个公共方法LoadNextLevel,当被调用时开始加载下一个场景
    public void LoadNextLevel()
    {
        // 开启一个协程LoadLevel,异步加载场景
        StartCoroutine(LoadLevel());
    }

    // 协程LoadLevel,用于异步加载场景并显示加载进度
    IEnumerator LoadLevel()
    {
        // 显示加载屏幕
        loadScreen.SetActive(true);

        // 获取当前激活场景的下一个场景的AsyncOperation对象
        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);

        // 设置不允许立即激活场景,等待进度加载到一定程度后再激活
        operation.allowSceneActivation = false;

        // 循环直到加载操作完成
        while (!operation.isDone)
        {
            // 规范化进度值,将其压缩到0到1之间
            float progress = Mathf.Clamp01(operation.progress / 0.9f);

            // 将标准化的进度值赋给slider组件
            slider.value = progress;

            // 更新文本组件,显示加载的百分比
            text.text = (progress * 100f).ToString("F0") + "%";

            // 当加载进度超过90%时,允许用户通过按键提前激活场景
            if (operation.progress >= 0.9f)
            {
                slider.value = 1;

                // 检测键盘任意键按下
                if (Input.anyKeyDown)
                {
                    // 允许场景激活,这意味着即使加载未完成也可以进入下一个场景
                    operation.allowSceneActivation = true;
                }
            }

            // 让协程暂停一帧,然后继续执行
            yield return null;
        }
    }
}

标签:场景,进度条,Unity,progress,using,operation,public,加载
From: https://blog.csdn.net/qq_57101277/article/details/136990050

相关文章

  • 关于unity的学习-第一天
    首先是关于unity的下载,直接去官网。。。下hub版本,然后安装,再安装这个 选他默认的就好,然后开始创建新的项目 这是选3d 这个里面可以对创建的文件进行设置,指preferrnce 里面可以对扩展进行修改 此处选择vs编辑器果然出现问题了 vs无法下载 这是可能的原因我......
  • redis实际应用场景及并发问题的解决
    业务场景接下来要模拟的业务场景:每当被普通攻击的时候,有千分之三的概率掉落金币,每回合最多爆出两个金币。1.每个回合只有15秒。2.每次普通攻击的时间间隔是0.5s3.这个服务是一个集群(这个要求暂时不实现)编写接口,实现上述需求。核心问题可以想到要解决的主要问题是,1.如何......
  • 在Java项目中使用Redis的五大数据结构应用场景与代码实现
    在Java项目中使用Redis的五大数据结构可以应用于以下场景:1、字符串(String):1、缓存数据:将经常访问的数据存储在Redis中,以减轻数据库的负载。2、计数器:记录用户的访问次数、点赞数等。3、分布式锁:在分布式环境下实现互斥访问,防止并发问题。2、列表(List):1、消息队列:将生产......
  • ngix7种应用场景
           ......
  • 解决长尾问题,BEV-CLIP:自动驾驶中复杂场景的多模态BEV检索方法
    解决长尾问题,BEV-CLIP:自动驾驶中复杂场景的多模态BEV检索方法理想汽车的工作,原文,BEV-CLIP:Multi-modalBEVRetrievalMethodologyforComplexSceneinAutonomousDriving链接:https://arxiv.org/pdf/2401.01065.pdf自动驾驶中对复杂场景数据的检索需求正在增加,尤其是随着......
  • @Transactional注解失效场景以及解决方法
    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点面试官:说一说@Transactional注解失效的场景以及解决方法@Transactional是Spring框架提供的一个注解,用于声明事务的边界。它可以应用于类、方法或接口上,用于指定......
  • MeterSphere接口自动化系列之Sql前后查询依赖场景
    一、使用场景    需要多次查询数据,并对查询结果进行比较,查询的前后存在依赖,多条记录循环处理。二、实际场景实例本文的场景如下:        先查询结果表信息,根据结果表的字段作为条件,用于后续源数据查询语句的条件,并根据源数据算术运算后的结果和结果表的实际......
  • C# 控制台进度条
    classProgram{staticvoidMain(string[]args){boolisBreak=false;ConsoleColorcolorBack=Console.BackgroundColor;ConsoleColorcolorFore=Console.ForegroundColor;//第一行信息Console.WriteLine("......
  • 构建空间场景轻应用,Mapmost Alpha来啦【文末赠书(10本)--第二期】
    文章目录:一、MapmostAlpha介绍二、MapmostAlpha应对数字孪生业务痛点解决之道2.1MapmostAlpha提供海量城市底板2.2MapmostAlpha提供便捷的配置管理工具2.3MapmostAlpha提供一键式部署发布和分享三、沉浸式体验MapmostAlpha3.1创建应用3.2新手指导3.3场......
  • 限流场景&限流方案的一些思考
    限流场景保护系统资源:限流可用于保护系统资源,防止系统被过度请求而导致资源耗尽或系统崩溃。例如,限制对数据库、缓存、消息队列等关键资源的访问速率,以确保系统的稳定性和可用性。防止恶意攻击:限流可用于防止恶意攻击和恶意请求,如暴力破解、DDoS攻击等。通过限制来自单个I......