当前位置: 首页 > news >正文

Unity加载界面制作

效果

UI部分

结构

说下思路:

        因为是加载界面,所以最上层是一个Panel阻止所有的UI交互,这个Panel如果有图片就加一个图片,如果没有可以把透明度调到最大,颜色设为黑色.

        下面最核心的就是一个进度条了,有图片的话,将进度条的底放进来,将进度条锚点设为下中,将滑动块的尺寸设为0.

        然后将Handle的image组件移除,因为不使用这个展示滑块UI,而只使用它的功能.

        因为我将一个滑块图片放入之后使用Set Native Size来恢复尺寸,锚点将发生变化(我遇到的锚点变为左下),然后保存设置滑块会变回默认的锚点导致滑块变形,如下锚点

        这会导致位置偏差,即便我在保存前将锚点设为和此相同的情况,也不行.所以我直接将滑块尺寸设为0,将Handle的Image组件移除,在Handle下面再设置一个Image和Text,这样就避免的我们自身的滑块UI受到影响,最后调整一下我们的滑块位置.

        最后就是加载条了,如下结构设置一个image,尺寸和滑动条尺寸相同,但是:将Pivot设置为0, 0.5就是将自身中心设为最左端.将scale的x设为0.这样我们就可以通过将滑动条的滑动值设置给x,让加载条和加载进度保持一致

UI拼接部分就完毕了,你可以在Panel下继续添加其他装饰组件.

脚本部分

这样命名

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;namespace JKD_Config.UI
{public class PopPanel_showScrollbar : MonoBehaviour{public Scrollbar scrollbar;public Transform img_loadingBottom;public TextMeshProUGUI text_showLoadingValue;Progress<float> progress;float currentProgress = 0;public void Init(IProgress<float> loadingProgress){scrollbar = transform.GetComponentInChildren<Scrollbar>();scrollbar.value = 0;img_loadingBottom = scrollbar.transform.Find("img_loadingBottom");img_loadingBottom.localScale = new Vector3(0, 1, 1);text_showLoadingValue = transform.GetComponentInChildren<TextMeshProUGUI>();text_showLoadingValue.text = "";gameObject.SetActive(true);progress = ((Progress<float>)loadingProgress);progress.ProgressChanged += OnValueChanged;//注意线程安全}private void OnValueChanged(object _, float progress){currentProgress = progress;}private void Update(){scrollbar.value = currentProgress;img_loadingBottom.localScale = new Vector3(currentProgress, 1, 1);text_showLoadingValue.text = string.Format("{0:P}", currentProgress);if (currentProgress >= 0.9f){gameObject.SetActive(false);progress.ProgressChanged -= OnValueChanged;progress = null;currentProgress = 0;}}}
}

        这个脚本很简单,初始化的时候就激活这个面板,进入加载界面,接受一个IProgress<float> loadingProgress对象,这是.net中常用的报告进度的对象,我们获取这个对象目的是为了将我们的回调方法注册进去(即OnValueChanged方法).

        这里你可能疑惑为什么我的回调里面只是传递了一个float,而UI相关的更新却放在了Update中,而不是将UI更新直接放到回调方法中.为了保证线程安全,IProgress<float> loadingProgress对象拿到我们的回调是在后台线程执行的,而Unity的组件只能在主线程执行,所以才"多此一举".

示例

private IProgress<float> loadingProgress = new Progress<float>(); 
private void OnProgress(AssetLoaderContext assetLoaderContext, float progress){Debug.Log($"Loading Model. Progress: {progress}");if (!Fm_BackModLib.Inst.popPanel_showScrollbar.gameObject.activeInHierarchy){Fm_BackModLib.Inst.popPanel_showScrollbar.Init(loadingProgress);}loadingProgress.Report(progress);}

        假设你在进行一个耗时操作,这个OnProgress会不停地调用来传递一个float告知进度,这时我们就可以new一个进度对象,初始化我们的进度面板,然后因为OnProgress会不停地调用,进度对象的Report方法会传递进度.

相关文章:

Unity加载界面制作

效果 UI部分 结构 说下思路: 因为是加载界面,所以最上层是一个Panel阻止所有的UI交互,这个Panel如果有图片就加一个图片,如果没有可以把透明度调到最大,颜色设为黑色. 下面最核心的就是一个进度条了,有图片的话,将进度条的底放进来,将进度条锚点设为下中,将滑动块的尺寸设为0.…...

最好的ppt模板网站是哪个?做PPT不可错过的18个网站!

现在有很多PPT模板网站&#xff0c;但真正免费且高质量的不多&#xff0c;今天我就分享主流的国内外PPT模板下载网站&#xff0c;并且会详细分析这些网站的优缺点&#xff0c;这些网站都是基于个人实际使用经验的&#xff0c;免费站点会特别标注&#xff0c;让你可以放心下载&a…...

煤矿安全监测监控作业题库

第一部分 安全法律法规知识子题库 单选题 1.《安全生产法》规定&#xff0c;生产经营单位应当向从业人员如实告知作业场所和工作岗位存在的(A)、防范措施以及事故应急措施。 A. 危险因素    B. 人员状况    C. 设备状况    D. 环境状况 2.《安全生产法》规定&…...

【记录】Django数据库的基础操作

数据库连接 在Django中使用 mysqlclient 这个包用于数据库的连接&#xff0c;切换至 Django环境中直接 pip install mysqlclient 安装此包 1 数据库连接配置 在项目目录下的setting.py中配置 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: mini,#数据库名US…...

XHCI 1.2b 规范摘要(五)

系列文章目录 XHCI 1.2b 规范摘要&#xff08;一&#xff09; XHCI 1.2b 规范摘要&#xff08;二&#xff09; XHCI 1.2b 规范摘要&#xff08;三&#xff09; XHCI 1.2b 规范摘要&#xff08;四&#xff09; XHCI 1.2b 规范摘要&#xff08;五&#xff09; 文章目录 系列文章目…...

小程序短链接生成教程

文章目录 一、小程序短链接&#xff08;必须发布正式的小程序才能生成短链接&#xff01;&#xff01;&#xff01;&#xff09;二、使用步骤1.获取token信息2.获取短链接 总结 一、小程序短链接&#xff08;必须发布正式的小程序才能生成短链接&#xff01;&#xff01;&#…...

C++进阶之路:再谈构造函数、static成员、友元(类与对象_下篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

C 函数指针与回调函数

C 函数指针与回调函数 在C语言中&#xff0c;函数指针和回调函数是两个非常强大的概念&#xff0c;它们在提高代码的灵活性和模块化方面发挥着重要作用。本文将详细介绍C语言中的函数指针和回调函数&#xff0c;包括它们的定义、用法和实际应用场景。 函数指针 定义 函数指…...

CTF(九)

导言&#xff1a; 本文主要讲述在CTF竞赛网鼎杯中&#xff0c;web类题目AreUSerialz。 靶场链接&#xff1a;BUUCTF在线评测 一&#xff0c;分析代码。 看到了一大段php代码。 <?php// 引入flag.php文件 include("flag.php");// 高亮显示当前文件 highlight…...

三种单例实现

1、不继承Mono的单例 实现 使用 注&#xff1a; 使用需要继承BaseManager 泛型填写自己本身 需要实现无参构造函数 2、挂载式的Mono单例 实现 使用 注&#xff1a; 使用需要继承SingletonMono 泛型填写自己本身 需要挂载在unity引擎面板 3、不用挂载式的单例 实现 使…...

Spring XML配置方式和Spring Boot注解方式的详细对照关系

功能/配置项Spring XML配置方式Spring Boot注解方式定义Beanxml <bean id"myBean" class"com.example.MyBean"/>javaBeanpublic MyBean myBean() { return new MyBean(); }注入Beanxml <bean id"myBean" class"com.example.MyBea…...

leetcode 无重复字符串的排列和组合

1.题目要求: 2.题目代码&#xff1a; class Solution { public:vector<string> result;string str;//利用回溯去解决此问题void backtricking(string S,vector<bool>& used){if(str.size() S.size()){result.push_back(str);}//用used去掉重复的排列与组合f…...

7. 配置

三种获取配置的方法 返回 /config/config.php 、/config/autoload/xxx.php 中的值 <?php namespace App\Controller;use Hyperf\Config\Annotation\Value; use Hyperf\Contract\ConfigInterface; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Annotation\AutoC…...

WPF中Grid、StackPanel、Canvas、WrapPanel的区别

WPF 中的 Grid、StackPanel、Canvas 和 WrapPanel 都是布局控件&#xff0c;用于在用户界面中组织和排列元素&#xff0c;但它们各自有不同的布局行为和用途。以下是它们的主要区别&#xff1a; Grid&#xff1a; Grid 是最灵活的布局控件&#xff0c;类似于 HTML 中的表格&…...

昇思MindSpore进阶教程--开发常见问题

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 MindSpore官网提供了一份在使用MindSpore…...

【Linux】Linux进程地址空间

1.程序地址空间分配回顾 在前⾯C语⾔以及C部分介绍过⼆者的内存分配如下图所示&#xff1a; 全局变量区和未初始化全局变量区也被称为数据区&#xff0c;数据区中除了有全局变 量&#xff0c;还有静态变量和常量 使⽤下⾯的代码演示不同的内容所处的地址&#xff1a; #includ…...

创建包含可导入浏览器信任的SSL自签名证书

问题&#xff1a;现在的三大浏览器&#xff0c;chrome、edge、firefox 一般都默认启用https检查&#xff0c;这就要求我们自建的局域网内的网址和其他诸如nextcloud、photoprism、tiddlywiki等应用也必须要有证书。解决方法是使用openssl自己生成一个。由此则会再衍生出一个问题…...

[Windows] 很火的开源桌面美化工具 Seelen UI v2.0.2

最近&#xff0c;一款来自Github的开源桌面美化工具突然在网上火了起来&#xff0c;引发了大家的关注&#xff0c;不少小伙伴纷纷开始折腾了起来。而折腾的目的&#xff0c;无非是为了一点点乐趣而已&#xff0c;至于结果如何&#xff0c;并不是最要紧的&#xff0c;反倒是体验…...

华帝携手抖音头部达人,金牌导演李力持量身打造厨电定制微短剧

10月21日&#xff0c;由华帝独家冠名&#xff0c;金牌导演李力持执导&#xff0c;抖音头部达人逆袭丁姐领衔主演&#xff0c;ATV亚洲电视、知行易达、抖音商城联合出品的24集现代家庭治愈美食定制微短剧《女厨神》上线抖音。 该剧讲述了热爱生活和美食的丁姐&#xff0c;为了家…...

监控易监测对象及指标之:JBoss 7.1.x中间件监控

监控易是一款功能全面的监控软件&#xff0c;能够实时追踪和分析各类IT资源的性能数据&#xff0c;提供及时的故障预警和性能报告。本文将对监控易针对JBoss 7.1.x中间件的监控指标进行深入解读&#xff0c;以帮助用户更好地理解和应用这些数据。 JBoss 7.1.x作为一款广泛使用的…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...