三、异步加载场景

news2024/11/23 22:35:36

一、加载场景实现

1、加载进度条方法

在加载场景这个预制体面板上挂在一个代码

LoadingWnd

先对组件进行声明包括(一个进度条上的文字、提示组件(进度条位置)、进度点、进度百分比)

使用进度条,首先要初始化一下,也就是进度归为零

设置一个私有变量=》进度条的宽度

把进度条上的组件X也就是进度宽度赋值给这个私有变量。

两个文本初始化一下

进度条归为零

进度点的位置是一个V3变量根据数值的最左边

然后写一个方法设置进度条,传入一个参数(相当于进度数值)因为float为0~1之间

文本:参数乘以100转换为一个十位数字,int强转换为整数值,加一个%

prg这个变量赋值给进度条

PosX:乘以进度条的宽度减去545,就会是进度条最左边的点的值,注意这是一个值

然后调用进度点中的组件,把这个值赋给它。

public void SetProgress(float prg)
{
    txtPrg.text = (int)(prg*100)+"%";
    imgFG.fillAmount = prg;

    float posX = prg * fgWidth - 545;
    imgPoint.GetComponent<RectTransform>().anchoredPosition = new Vector2(posX, 0);
}

以下是加载进度条的总体代码

//加载进度界面
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class LoadingWnd : MonoBehaviour
{
    public TextMeshProUGUI txtTips;//文字组件
    public Image imgFG;//提示组件
    public Image imgPoint;//进度点
    public TextMeshProUGUI txtPrg;//进度百分比

    private float fgWidth;

    public void InitWnd()
    {
        fgWidth = imgFG.GetComponent<RectTransform>().sizeDelta.x;
        txtTips.text = "这是一条游戏Tips";
        txtPrg.text = "0%";
        imgFG.fillAmount = 0;
        imgPoint.transform.localPosition = new Vector3(-545f,0,0);

    }
    public void SetProgress(float prg)
    {
        txtPrg.text = (int)(prg*100)+"%";
        imgFG.fillAmount = prg;

        float posX = prg * fgWidth - 545;
        imgPoint.GetComponent<RectTransform>().anchoredPosition = new Vector2(posX, 0);
       
    }

}

2、资源加载方法

这个代码是一个单例

写一个异步加载场景方法

讲解一下这个方法:

这个方法中传入一个参数,就相当于一个机制,因为你不知道这个参数是谁

那么会有一个总的来调用这个机制,就是使用这个笔的人,这个机制就是笔。查找这个方法的引用,找到这个人

然后,在这个方法中使用lamboda表达式,委托调用这个代码块:

把异步加载的过程赋值给val

然后再gameroot单例中调用SetProgress这个方法并把val这个值赋值给这个方法中的prg

那么如果这个值为1了prgcb和异步加载设置为空值

把加载面板失活

使用委托,在update中调用这个委托

如果不为空,说明异步加载未完成,持续调用这个委托

当进度为1 则这个委托为空,不再执行update函数。

以下是加载资源的总体代码:

//资源加载服务
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ResSvc : MonoBehaviour
{
    public static ResSvc Instance=null;
    public void InitSvc()
    {
        Instance = this;
        Debug.Log("Init ResSvc");
    }
    private Action prgCB = null;
    public void AsyncLoadScene(string sceneName)
    {
       AsyncOperation sceneAsync=  SceneManager.LoadSceneAsync(sceneName);
        prgCB=() =>
        {
            float val = sceneAsync.progress;
            GameRoot.Instance.loadingWnd.SetProgress(val);
            if (val == 1)
            {
                prgCB = null;
                sceneAsync = null;
                GameRoot.Instance.loadingWnd.gameObject.SetActive(false);
            }
        };
        
    }
	private void Update()
	{
        if (prgCB != null)
        {
            prgCB();
        }
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2208291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Docker搭建WAF-开源Web防火墙VeryNginx

1、说明 VeryNginx 基于 lua_nginx_module(openrestry) 开发,实现了防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 文章目录 1、说明1.1、基本概述1.2、主要功能1.3、应用场景2、拉取镜像3、配置文件4、…

SVM及其实践2 --- 对典型数据集的多分类实践

说明 本文为SVM系列的第二篇文章&#xff0c;主要是基于SVM对两份公开数据集的分类实践。建议读者在阅读本文前先看看本系列的第一篇博文[1]: SVM及其实践1 --- 概念、理论以及二分类实践-CSDN博客 Blog 2024.10.6 本文第一次撰写 目录 说明 目录 一、Iris数据集以及基于S…

Qt-链接数据库可视化操作

1. 概述 Qt 能够支持对常见数据库的操作&#xff0c;例如&#xff1a; MySQL、Oracle、SqlServer 等等。 Qt SQL模块中的API分为三层&#xff1a;驱动层、SQL接口层、用户接口层。 驱动层为数据库和SQL接口层之间提供了底层的桥梁。 SQL接口层提供了对数据库的访问&#xff0…

【源码+文档+调试讲解】基于安卓的小餐桌管理系统springboot框架

摘 要 相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低运营人员成本&#xff0c;实现了小餐桌的标准化、制度化、程序化的管理&#xff0c;有效地防止了小餐桌的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准确地查询和修…

vue+ElementUI—实现基础后台管理布局(sideBar+header+appMain)(附源码)

后台管理的模板很多&#xff0c;vue本身就提供了完整的vue-template-admin&#xff0c;vue-admin-beautiful等后台管理系统化框架&#xff0c;但是这些框架正是因为成体系而显得繁重。假如你想搭建一个静态的后台管理模板页面和几个单独的菜单页面&#xff0c;直接就上框架是否…

学习 PostgreSQL + Spring Boot 3 +mybatisplus整合过程中的报错记录

今天计划学习 PostgreSQL&#xff0c;并顺便尝试使用 Spring Boot 3.x 框架&#xff0c;打算整合 Spring Boot 3、PostgreSQL 和 MyBatis-Plus。整合后一直出现以下报错&#xff1a; 去AI上面搜了讲的是sqlSessionFactory 或 sqlSessionTemplate 没有正确配置 初始分析&#…

MySQL-01.课程介绍

一.什么是数据库 二.数据库产品 三.课程安排

Python_函数式编程核心(高阶函数、闭包等)

函数式编程(functional programming)其实是个很古老的概念&#xff0c;诞生距今快60年啦&#xff01;最古老的函数式编程语言Lisp新出现的函数式编程语言&#xff1a;比如Erlang、Scala、clojure等热门语言&#xff1a;Python、java、JavaScript、C等都增加了函数式编程的一些特…

SpringBoot购物推荐网站开发:架构设计与技术实现

3系统分析 3.1可行性分析 通过对本东大每日推购物推荐网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本东大每日推购物推荐网站采用JAVA作为开发语言&…

SpringBoot框架下购物推荐系统的架构与实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

VSCode搭建C/C++开发环境【Windows】

VSCode搭建C/C开发环境 1. 配置C/C开发环境1.1 下载和配置MinGW-w64编译器套件1.2 安装C/C插件 2. 在VSCode上编写C语言代码&#xff0c;并编译执行2.1 先打开一个文件夹&#xff0c;写一份C语言代码2.2 设置C/C编译的选项&#xff1a;c_cpp_properties.json2.3 创建执行任务&a…

CDGA|数据治理:唤醒“沉睡”的数据,激发无限价值潜能

在当今这个信息爆炸的时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;许多企业面临着数据孤岛、数据质量低下、数据利用率不高等问题&#xff0c;导致大量“沉睡”的数据未能发挥其应有的价值。数据治理&#xff0c;作为解锁这些数据宝藏的钥匙&#xff0c;…

连夜爆肝收藏各大云服务新老用户优惠活动入口地址(内含免费试用1个月的地址),适用于小白,大学生,开发者,小企业老板....

具体请前往&#xff1a;云服务器优惠活动入口大全--收藏各主流云厂商的云服务器等系列产品的优惠活动入口&#xff0c;免费试用1个月活动入口&#xff0c;让新老用户都能根据使用场景和身份快速锁定优惠权益 经济下滑&#xff0c;被优化增多&#xff0c;大学生就业难&#xff0…

Linux之如何找回 root 密码?

1、启动系统&#xff0c;进入开界面&#xff0c;在界面中按“e"进入编辑界面 2、进入编辑界面&#xff0c;使用键盘上的上下键把光标往下移动&#xff0c;找到以”Linux16“开通内容所在的行数&#xff0c;在行的最后面输入&#xff1a;init/bin/sh 3、输入完成后&…

Windows,MySQL主从复制搭建

前提&#xff1a;windows环境&#xff0c;同一个服务器安装多个相同版本的mysql数据库 多个MySQL服务搭建完成后&#xff0c;下面我们进行主从复制的相关配置 1.主数据库 执行指令 #创建用户 CREATE USER slavelocalhost IDENTIFIED BY 123456;#授权 GRANT REPLICATION SLA…

plpo vue实战版教程

vue实战版教程 什么是plpo安装1.将plop添加到您的项目2.全局安装plop(可选&#xff0c;但建议使用方便)3.在项目根目录下创建一个 plopfile.js vue 实战&#xff08;后台管理系统 - 增删改查&#xff09;所需文件文件介绍创建配置文件 plopfile.js创建模板和脚本命令文件模板创…

Emu3:北京智源推出AI多模态世界模型,超越DeepMind和微软,刷新了8项性能指标

Emu3是北京智源人工智能研究院推出的一款原生多模态世界模型&#xff0c;采用智源自研的多模态自回归技术路径&#xff0c;在图像、视频、文字上联合训练&#xff0c;使模型具备原生多模态能力&#xff0c;实现图像、视频、文字的统一输入和输出。Emu3将各种内容转换为离散符号…

食堂校园预约就餐系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;商品管理&#xff0c;论坛管理&#xff0c;用户管理&#xff0c;商家管理&#xff0c;公告信息管理&#xff0c;基础数据管理 微信端账号功能包括&#xff1a;系统首页&#xf…

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…

vulnhub-Kioptrix_Level_1靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、解决检测不到IP的问题 2、信息搜集 3、利用exp ①mod_ssl2.8版本漏洞 ②smb2.2版本漏洞 四、结论 一、测试环境 1、系统环境 渗透机&#xff1a;kali2021.1(192.168.202.134) 靶 机…