unity2022版本 实现加减进度条
简介
在现代游戏开发中,用户界面 (UI) 扮演着至关重要的角色,它不仅为玩家提供信息,还增强了游戏的可玩性。加减进度条是一种常见的UI元素,它可以用于显示游戏中的进度、倒计时、资源管理和其他关键信息。在这篇博客中,我们将深入探讨游戏开发中加减进度条的实现和使用。
界面节点设置
-
创建 Canvas 节点容器:首先,建立一个 Canvas 节点容器,命名为 "Bar"。Canvas将作为整个进度条的容器,负责容纳所有相关的元素。
-
创建背景节点:在 "Bar" Canvas 内创建一个名为 "BgBar" 的节点,用于表示进度条的背景。这个节点将显示进度条的整体背景或底纹。
-
创建前景颜色节点:接下来,在 "Bar" Canvas 内创建一个名为 "ProBar" 的节点,这将是进度条的前景节点,表示当前的进度。通常,您会根据进度的百分比来动态调整此节点的大小。
-
创建文本节点:为了在进度条上显示相关文本信息,您可以在 "Bar" Canvas 内创建一个名为 "Txt" 的节点。这个节点可以用于显示进度百分比或其他相关文本内容。
-
创建加号和减号节点:如果您需要在进度条上添加加号和减号按钮用于调整进度,您可以在 "Bar" Canvas 内分别创建 "加号" 和 "减号" 节点。这些按钮可以与进度条的交互功能相关联。
节点结构示意图
Bar (Canvas节点容器)- BgBar (进度条背景节点)- ProBar (前景颜色节点)- Txt (文字节点)- + (加号节点)- - (减号节点)
主要思路:
为了实现交互性,我们为加号节点和减号节点添加了点击事件。当用户点击加号节点时,当前进度会增加,同时文本节点内容和前景颜色节点宽度都会相应更新。同样,当用户点击减号节点时,当前进度会减少,文本节点内容和前景颜色节点宽度也会做出相应调整。这些交互功能将帮助用户轻松控制进度条,并提供了一种直观的方式来与游戏或应用互动
完整代码如下
using UnityEngine;
using UnityEngine.UI;
using TMPro;namespace HHSJ
{public class Bar : MonoBehaviour{[HideInInspector] public float now = 0; // 当前进度[HideInInspector] public float all = 0; // 总进度// 更新显示进度文本public void UpdateTxt(){// 构建显示文本,格式为 "当前进度 / 总进度"string txt = now.ToString() + "/" + all.ToString();// 查找名为 "Txt" 的子对象,用于显示文本Transform txtTransform = UserUtils.FindChild(this.transform, "Txt");// 更新 TextMeshProUGUI 组件的文本内容txtTransform.GetComponent<TextMeshProUGUI>().text = txt;// 获取前景进度条的 RectTransform 组件RectTransform proBarTransform = UserUtils.FindChild(this.transform, "ProBar").GetComponent<RectTransform>();// 获取背景进度条的 RectTransform 组件RectTransform bgBarTransform = UserUtils.FindChild(this.transform, "BgBar").GetComponent<RectTransform>();// 计算当前进度百分比,并限制在 0 到 100% 之间float bl = (now / all);if (bl > 1.0f){bl = 1.0f;}else if (bl < 0.0f){bl = 0.0f;}// 根据百分比调整前景进度条的宽度proBarTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, bgBarTransform.rect.width * bl);}// 增加当前进度public void AddNow(){if (now + 1 <= all){now = now + 1;this.UpdateTxt();}}// 减少当前进度public void SubNow(){if (now - 1 > 0){now = now - 1;this.UpdateTxt();}}// 设置当前进度public void SetNow(float now){this.now = now;this.UpdateTxt();}// 设置总进度public void SetAll(float all){this.all = all;this.UpdateTxt();}}
}
大致效果如下:

社交:
游戏开发QQ群:859055710
相关文章:
unity2022版本 实现加减进度条
简介 在现代游戏开发中,用户界面 (UI) 扮演着至关重要的角色,它不仅为玩家提供信息,还增强了游戏的可玩性。加减进度条是一种常见的UI元素,它可以用于显示游戏中的进度、倒计时、资源管理和其他关键信息。在这篇博客中࿰…...
COCO数据集中图像的caption读取到txt文件
annotations_trainval2017.zip import os import shutil import jsoncaptions_path r"G:\SketchDiffusion\Sketchycoco\Dataset\annotations\captions_train2017.json" # 读取json文件 with open(captions_path, r) as f1:dictortary json.load(f1)# 得到images和…...
再谈Java泛型
一.类型参数的约束 我们可以对泛型传进来的参数做一些约束,比如说 用extends表明传进来的参数类型必须是必须是某个类型的子类型或者本身 当然也可以用接口约束,也是用extends表明传进来的参数类型必须实现某个接口。用&连接,注意class…...
scss使用自定义函数实现单位像素随屏幕比例动态缩放
vue中通过变量和scss函数来动态实现动态缩放像素 简单来说就是比例缩小时,像素单位变大,从而字体大小相对不变,以下仅处理比例缩小的状况 自定义一个属性–size,初始值为1px template <template><div class"hom…...
Django 静态自定义化配置
STATIC # APP本地静态资源目录(就APP对应的) STATIC_URL "/static/"# 远程静态文件URL(少用) REMOTE_STATIC_URL# 外部引用静态文件目录(外层的) STATICFILES_DIRS [os.path.join(BASE_DIR, &…...
TensorFlow入门(十四、数据读取机制(1))
TensorFlow的数据读取方式 TensorFlow的数据读取方式共有三种,分别是: ①预加载数据(Preloaded data) 预加载数据的方式,其实就是静态图(Graph)的模式。即将数据直接内嵌到Graph中,再把Graph传入Session中运行。 示例代码如下: import tensorflow.compat.v1 as tf tf.disabl…...
hyperf框架WebSocket 服务
1:安装 composer require hyperf/websocket-server2:配置 Server 修改 config/autoload/server.php,增加以下配置。 return [servers > [[name > ws,type > Server::SERVER_WEBSOCKET,host > 0.0.0.0,port > 9502,sock_typ…...
前端模块化
当我们从公司招聘上看到要求模块化的内容。 能从这几个角度回答,就说明我们是懂模块化的。 1. 模块化的本意,是当遇到一个复杂项目的时候(简单的不建议用),把这个复杂的问题拆分成相对独立的模块,降低程序…...
如何使用Docker轻松构建和管理应用程序(一)
如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下&a…...
uniapp 获取地理位置(uni#getLocation和高德sdk获取中文地址)
参考 https://uniapp.dcloud.net.cn/api/location/location.html https://ask.dcloud.net.cn/article/35070 1. uniapp api获取经纬度 uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度: res.longitude);console.log(当前位…...
openmp 通用核心 学习 2 数据环境—任务-内存模型
目录 openmp 数据环境 子句: 在上述三个子句中也可以传入指针和数组 openmp 任务: openmp内存模型: openmp 数据环境 子句: shared(list) private(list)//默认构造 值未被初始化 对于图6-5: //File #1 int tm…...
Linux有哪些指令
Linux操作系统提供了许多指令,可以帮助用户进行各种操作。以下是一些常见的Linux指令: ls:列出当前目录下的文件和目录。cd:改变当前工作目录。pwd:显示当前工作目录。mkdir:创建新的目录。rm:…...
图扑 HT for Web 风格属性手册教程
图扑软件明星产品 HT for Web 是一套纯国产化独立自主研发的 2D 和 3D 图形界面可视化引擎。HT for Web(以下简称 HT)图元的样式由其 Style 属性控制,并且不同类型图元的 Style 属性各不相同。为了方便查询和理解图元的 Style 属性࿰…...
oracle 数据库删除序列
oracle 数据库删除序列 要删除 Oracle 数据库中的序列,你可以使用以下的 SQL 命令: DROP SEQUENCE sequence_name;其中,sequence_name 是你想删除的序列的名称。你需要确保当前用户对序列拥有适当的权限。 请注意,删除序列将永…...
JAVA毕业设计098—基于Java+Springboot的在线教育课程视频(源码+数据库)
基于JavaSpringboot的在线教育课程视频(源码数据库)098 一、系统介绍 本系统分为管理员、教师、用户三种角色(角色菜单可自行分配) 用户功能: 注册、登录、课程搜索、视频观看、课程资料发布、资料浏览、用户中心、我的发布、通知信息、密码修改 教师功能&…...
如何在雷电模拟器上安装Magisk并加载movecert模块抓https包(二)
接来下在PC端安装和配置Charles,方法同下面链接,不再赘述。在模拟器上安装magisk实现Charles抓https包(二)_小小爬虾的博客-CSDN博客 一、记录下本机IP和代理端口 二、在手机模拟器上设置代理192.168.31.71:8888,设置…...
基于web的酒店客房管理系统
目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 会员信息管理 客房信息管理 收藏客房管理 用户入住管理 客房清扫管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施…...
linux查看系统信息
Linux查看当前操作系统版本信息 cat /proc/version Linux version 2.6.32-696.el6.x86_64 (mockbuildc1bm.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017 Linux查看版本当前操作系统内核信息 uname -a Linux…...
蓝牙官网demo的记录
目录 一、官网蓝牙demo 二、可以参考的博客带蓝牙demo 一、官网蓝牙demo 平常看android官网,发现有两个不同的文档地址: 连接 | Android 开源项目 | Android Open Source Project 蓝牙概览 | Connectivity | Android Developers 蓝牙demo在 …...
Linux相关概念及常见指令
注意:本篇博客除了讲解Linux的相关指令,还穿插着Linux相关概念及原理的讲解。 账号相关指令 whoami:查看当前用户 adduser 用户名: 添加新用户 passwd 用户名:为这个用户设置密码 ls指令 1.Linux中文件的理解 文件是Linux中存储数据的基本单…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
