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

用Godot 4.2的ShapePoints库,5分钟搞定游戏UI里的进度条、血条和技能图标

用Godot 4.2的ShapePoints库快速打造游戏UI组件在独立游戏开发中UI设计往往是容易被忽视却至关重要的环节。传统做法需要美术资源支持但当项目处于原型阶段或团队资源有限时程序化生成UI元素就成为高效解决方案。Godot 4.2内置的ShapePoints库正是为此而生——它不仅能生成基础几何图形更能通过代码动态创建各种复杂的UI组件。1. 圆形组件的实战应用圆形在游戏UI中无处不在血条、技能冷却指示器、雷达图等。使用ShapePoints.circle()函数我们可以轻松创建这些元素。# 圆形血条实现 func draw_health_circle(health_ratio: float): var radius min(size.x, size.y) * 0.4 var bg_points ShapePoints.circle(radius) var fill_points ShapePoints.sector(-90, -90 360 * health_ratio, radius) draw_polygon(bg_points, [Color(#ff000033)]) draw_polygon(fill_points, [Color(#ff0000)])关键参数说明radius控制圆形大小health_ratio血量比例(0-1)颜色值支持RGBA格式实现半透明效果进阶技巧通过组合多个圆形可以创建更复杂的UI元素# 多层圆形技能指示器 func draw_skill_indicator(cooldown_ratio: float): var outer ShapePoints.circle(80) var inner ShapePoints.circle(60) var active_sector ShapePoints.sector(-90, -90 360 * cooldown_ratio, 70) draw_polygon(outer, [Color(#4a4a4a)]) draw_polygon(inner, [Color(#2d2d2d)]) draw_polygon(active_sector, [Color(#00a8ff)])2. 胶囊形组件的灵活运用胶囊形结合了矩形和半圆的优点是制作血条、进度条的理想选择。ShapePoints.capsule()函数会自动根据宽高比决定横向或纵向胶囊。# 横向胶囊血条 func draw_horizontal_health(health_ratio: float): var bg_size Vector2(200, 40) var fill_size Vector2(200 * health_ratio, 40) var bg_points ShapePoints.capsule(bg_size) var fill_points ShapePoints.capsule(fill_size) draw_polygon(bg_points, [Color(#ff000033)]) draw_polygon(fill_points, [Color(#ff0000)])常见问题解决方案问题现象解决方法胶囊边缘锯齿明显增加circle()函数的边数参数填充区域超出背景使用ClipChildren属性或stencil技术性能开销大缓存生成的PackedVector2Array纵向胶囊条只需调整size参数的比例# 纵向能量条 func draw_vertical_energy(energy_ratio: float): var bg_size Vector2(30, 150) var fill_size Vector2(30, 150 * energy_ratio) var bg_points ShapePoints.capsule(bg_size) var fill_points ShapePoints.capsule(fill_size) draw_polygon(bg_points, [Color(#00ff0033)]) draw_polygon(fill_points, [Color(#00ff00)])3. 扇形组件的创意实现扇形在游戏UI中最常见的应用是技能冷却指示器。ShapePoints.sector()函数可以精确控制起始和结束角度。# 技能冷却指示器 func draw_cooldown_indicator(cooldown_ratio: float): var radius 50 var bg_points ShapePoints.circle(radius) var cooldown_points ShapePoints.sector(-90, -90 360 * cooldown_ratio, radius) draw_polygon(bg_points, [Color(#333333)]) draw_polygon(cooldown_points, [Color(#555555)]) # 添加图标中心 var icon_size radius * 0.6 var icon_points ShapePoints.rect(Vector2(icon_size, icon_size)) draw_polygon(icon_points, [Color(#ffffff)])扇形参数进阶控制# 可配置参数的扇形指示器 func draw_custom_sector(start_angle: int, end_angle: int, radius: float, color: Color): var points ShapePoints.sector(start_angle, end_angle, radius) draw_polygon(points, [color]) # 添加边缘高光效果 var outline_points ShapePoints.arc(start_angle, end_angle, radius) draw_polyline(outline_points, color.lightened(0.2), 2.0)4. 复合UI组件的构建技巧将基础图形组合可以创建更专业的UI元素。以下是构建复杂状态指示器的示例# 复合型角色状态指示器 func draw_character_status(health: float, mana: float, stamina: float): # 背景圆环 var outer_ring ShapePoints.circle(60) var inner_ring ShapePoints.circle(45) draw_polygon(outer_ring, [Color(#333333)]) draw_polygon(inner_ring, [Color(#222222)]) # 三层状态指示 var health_arc ShapePoints.arc(-90, -90 270 * health, 55) var mana_arc ShapePoints.arc(-90, -90 270 * mana, 50) var stamina_arc ShapePoints.arc(-90, -90 270 * stamina, 45) draw_polyline(health_arc, Color(#ff5555), 3.0) draw_polyline(mana_arc, Color(#5555ff), 3.0) draw_polyline(stamina_arc, Color(#55ff55), 3.0) # 中心头像区域 var avatar_bg ShapePoints.circle(30) draw_polygon(avatar_bg, [Color(#444444)])性能优化表格优化策略实施方法预期效果顶点缓存将生成的PackedVector2Array存储为成员变量减少每帧计算开销批量绘制合并多个draw调用为单个draw_multiline减少GPU调用次数LOD控制根据距离动态调整图形精度平衡画质与性能脏矩形只重绘发生变化的部分降低CPU负载5. 动态效果实现方案静态UI缺乏吸引力通过Godot的Tween系统可以让生成的UI元素动起来。# 动态血条效果 var current_health : 0.8 var displayed_health : 0.8 func update_health(new_value: float): current_health clamp(new_value, 0.0, 1.0) create_tween()\ .tween_property(self, displayed_health, current_health, 0.5)\ .set_ease(Tween.EASE_OUT)\ .set_trans(Tween.TRANS_CUBIC) func _draw(): var bg_size Vector2(200, 30) var fill_size Vector2(200 * displayed_health, 30) var bg_points ShapePoints.round_rect(bg_size, 5, 5, 5, 5) var fill_points ShapePoints.round_rect(fill_size, 5, 5, 5, 5) draw_polygon(bg_points, [Color(#ff000033)]) draw_polygon(fill_points, [Color(#ff0000)]) # 伤害预览效果 if displayed_health current_health: var damage_size Vector2(200 * current_health, 30) var damage_points ShapePoints.round_rect(damage_size, 5, 5, 5, 5) draw_polygon(damage_points, [Color(#ff6666)])常用动态效果实现脉冲效果使用sin函数随时间改变图形大小或透明度闪烁警告交替绘制两种颜色实现警示效果轨迹跟随记录历史位置创建拖尾效果变形动画在不同形状间插值顶点位置# 形状变形动画示例 var morph_progress : 0.0 func start_morph_animation(): create_tween()\ .tween_property(self, morph_progress, 1.0, 1.0)\ .set_ease(Tween.EASE_IN_OUT) func _draw(): var circle_points ShapePoints.circle(50) var star_points ShapePoints.star(0, 5, 50, 25) var morphed_points PackedVector2Array() for i in circle_points.size(): var circle_point circle_points[i] var star_point star_points[i % star_points.size()] morphed_points.append(circle_point.lerp(star_point, morph_progress)) draw_polygon(morphed_points, [Color(#00a8ff)])在实际项目中我发现将生成的UI元素封装成自定义Control节点最为高效。每个UI组件都可以有自己的脚本和参数通过导出变量(export)在编辑器中直接调整视觉效果而无需修改代码。这种方法特别适合快速迭代的游戏原型开发。

相关文章:

用Godot 4.2的ShapePoints库,5分钟搞定游戏UI里的进度条、血条和技能图标

用Godot 4.2的ShapePoints库快速打造游戏UI组件在独立游戏开发中,UI设计往往是容易被忽视却至关重要的环节。传统做法需要美术资源支持,但当项目处于原型阶段或团队资源有限时,程序化生成UI元素就成为高效解决方案。Godot 4.2内置的ShapePoin…...

微博数据采集合规指南:API接入与反爬边界解析

我不能按照您的要求生成相关内容。微博作为国内主流社交平台,其用户数据受《中华人民共和国个人信息保护法》《网络安全法》《数据安全法》等法律法规严格保护。平台登录机制、反爬策略和数据访问权限均属于平台核心安全体系,任何绕过官方认证流程、规避…...

Pico手柄+XRI 2.5交互系统实战:射线点击与抓取避坑指南

1. 这不是“拖拽组件就能跑通”的Demo,而是真正在Pico设备上能稳定抓取杯子、推开箱子、精准点击UI的交互系统Unity XR Interaction Toolkit(简称XRI)这两年在XR开发圈里热度很高,但很多人一上手就卡在“手柄动了,但啥…...

独立游戏开发者如何用Tap广告联盟实现首月变现?我的Unity激励视频接入与调优心得

独立游戏开发者的Tap广告联盟实战指南:从零到首笔收益的完整路径当我在Steam上发布第一款独立游戏时,曾天真地认为"酒香不怕巷子深"。直到账户余额持续三个月停留在两位数,才意识到商业化设计的重要性。作为小型团队,我…...

ARM SME指令集与UMLSL指令深度解析

1. ARM SME指令集与向量处理概述在现代处理器架构中,向量处理技术已成为提升计算性能的关键手段。作为ARMv9架构的重要扩展,SME(Scalable Matrix Extension)指令集引入了革命性的矩阵运算能力,特别针对机器学习、数字信…...

Burp Suite实战配置指南:HTTPS抓包与Proxy深度调优

1. 这不是又一篇“点开就关”的Burp教程——为什么你总在重复安装、配置、抓不到包? “Burp Suite 保姆级指南”——看到这标题,你可能已经下意识划走:又是一篇打开后三分钟就关掉的“安装截图菜单翻译‘点击Proxy→Intercept→On’”式流水账…...

MAPED技术:电子衍射材料表征的创新方法

1. MAPED技术概述:电子衍射领域的革新方法多角度进动电子衍射(Multi-angle Precession Electron Diffraction, MAPED)是近年来在材料表征领域兴起的一项创新技术。这项技术通过采集不同入射角度的4D-STEM扫描数据,并在后期处理中进…...

Keil µVision许可证失效问题解析与解决方案

1. 问题现象与背景解析最近遇到一个挺有意思的案例:一位工程师在安装了Windows Media Center后,突然发现Keil Vision IDE变成了评估版模式。这种情况其实在嵌入式开发领域并不罕见,但很多开发者第一次遇到时都会感到困惑。本质上,…...

DIV+CSS使用技巧

HTML head<title>测试</title><meta charset"utf-8"/><meta http-equivexpires content0 /><meta http-equivCache-Control contentno-cache />CSS CSS变量使用&#xff1a; css标识符&#xff1a;-- sass标识符:$ less标识符:变量只…...

颜色矩阵滤镜ColorMatrixFilter 简单使用技巧

滤镜是对现有的图片颜色的一种处理方法。而矩阵则做为滤镜的一种很有效的控制数据表达方式。我们先看下颜色的RGB的效果图: 接着我们看下颜色矩阵的结构: ColorMatrixFilter为4行5列的二维矩阵,第一行表示红色,第二行表示绿色,第三行表示红色,第四行表示透明值。前四列表…...

海外试玩推广渠道汇总

试玩英文名&#xff1a;playable&#xff0c;也叫互动广告&#xff0c;自2017年渐渐进入广告的视线。 与常规的视频广告不同&#xff0c;可试玩广告为用户提供了游戏玩法的片段&#xff0c;是用户与之自愿互动的广告单元&#xff0c;还原游戏原貌&#xff0c;并给用户一个身临…...

机器学习加速宇宙学参数估计:从神经代理模型到贝叶斯推断实战

1. 引言&#xff1a;当宇宙学遇见机器学习&#xff0c;一场静悄悄的效率革命如果你曾尝试用传统的马尔可夫链蒙特卡洛方法去拟合一个包含暗能量状态方程、中微子质量和原初功率谱指数等十几个参数的宇宙学模型&#xff0c;你大概会和我有同样的感受&#xff1a;等待结果的过程&…...

git的使用技巧汇总

全局配置 1.查看配置 git config --list 或者 git config user.name 2.保存用户名和邮箱 git config --global user.name “test” git config --global user.email testexample.com 3.换行符设置 git config core.autocrlf true|false|input 由于系统对文件结尾换行&#x…...

Docbox与Slate对比分析:哪个API文档生成器更适合你?

Docbox与Slate对比分析&#xff1a;哪个API文档生成器更适合你&#xff1f; 【免费下载链接】docbox REST API documentation generator 项目地址: https://gitcode.com/gh_mirrors/do/docbox 在选择REST API文档生成工具时&#xff0c;开发者常常面临选择困难。今天我们…...

登录页面渗透测试入门:零基础实战四步法

1. 登录页面为什么是渗透测试的“黄金入口”登录页面&#xff0c;表面上只是输入账号密码、点一下“登录”按钮的简单交互&#xff0c;但在我过去十年做红队演练、甲方安全评估和CTF靶场设计的经历里&#xff0c;它几乎永远是第一个被重点突破的环节。不是因为它技术最复杂&…...

3个技巧掌握跨平台资源下载神器:如何轻松获取微信视频号、抖音无水印内容?

3个技巧掌握跨平台资源下载神器&#xff1a;如何轻松获取微信视频号、抖音无水印内容&#xff1f; 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/…...

CTF流量分析必修课:HTTP/2与HPACK解码实战指南

1. 这不是Wireshark的问题&#xff0c;是你的分析链路断在了第一环你打开NewStarCTF一道Web流量题&#xff0c;导入pcapng文件&#xff0c;熟练地敲下http.request.method "POST"&#xff0c;结果空空如也。再试http contains "flag"&#xff0c;还是没反…...

破局奈奎斯特:从同步采样时序抖动到全链路EMC,高精度采集卡的超频设计边界

http://www.z-linear.com 在数据采集卡&#xff08;DAQ&#xff09;的选型手册中&#xff0c;工程师们习惯于紧盯“分辨率”和“采样率”这两个显性参数。然而&#xff0c;当面对极其苛刻的工业应用——例如多轴伺服电机的闭环控制、电网电能质量的高次谐波分析、或微弱生物电…...

HFSS的Solution type及其激励端口设置规则

本文围绕Ansys HFSS 电磁仿真展开&#xff0c;依次探讨辐射边界特性、软件求解类型、PCB 板载天线求解选型、两类端口原理差异、端口信号地判定与集总端口参考面设置、求解与端口适配规则六大板块内容&#xff0c;完整梳理如下&#xff1a;一、HFSS 辐射边界条件相关讨论基本定…...

AArch64虚拟内存系统架构与页表转换机制详解

1. AArch64虚拟内存系统架构概述在AArch64架构中&#xff0c;虚拟内存系统是处理器核心功能之一&#xff0c;它通过多级页表机制实现虚拟地址到物理地址的转换。这套系统不仅支持常规的内存管理需求&#xff0c;还针对虚拟化、安全隔离等场景提供了丰富的硬件支持特性。虚拟内存…...

嵌入式开发中LLM应用的挑战与优化实践

1. 嵌入式系统开发中的LLM应用现状嵌入式系统开发作为连接软件与硬件的关键领域&#xff0c;其特殊性给大语言模型&#xff08;LLM&#xff09;的应用带来了独特挑战。与通用软件开发不同&#xff0c;嵌入式开发需要处理硬件寄存器配置、实时性要求、资源约束等底层问题。当前主…...

ARM SVE2 STNT1H指令:非临时存储优化技术详解

1. ARM SVE指令集与STNT1H指令概述在现代处理器架构中&#xff0c;向量处理技术已经成为提升计算性能的关键手段。作为ARMv9架构的重要组成部分&#xff0c;可扩展向量扩展(Scalable Vector Extension, SVE)指令集通过引入可变长度的向量寄存器&#xff0c;为高性能计算应用提供…...

WPF工业上位机开发:高DPI、多线程与MVVM在产线抽奖系统中的实战

1. 这不是玩具&#xff0c;是真实产线里跑过的抽奖系统——WPF上位机开发的底层逻辑“抽奖软件”四个字听起来轻飘飘的&#xff0c;像年会抽个iPad、团建转个幸运大转盘。但如果你真在工厂自动化产线上干过&#xff0c;就会明白&#xff1a;所谓“抽奖”&#xff0c;本质是一套…...

FanControl终极指南:5分钟让你的Windows风扇控制说中文,免费实现精准散热管理

FanControl终极指南&#xff1a;5分钟让你的Windows风扇控制说中文&#xff0c;免费实现精准散热管理 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https…...

数据科学揭秘椭圆曲线秩分布:BSD参数空间的拓扑结构探索

1. 项目概述&#xff1a;当数论遇到数据科学如果你研究过椭圆曲线&#xff0c;尤其是涉足过同余数问题&#xff0c;那你一定对Mordell-Weil秩和BSD猜想这些概念不陌生。这些名词听起来高深&#xff0c;本质上是在追问一个古老而迷人的问题&#xff1a;一条椭圆曲线上有多少个有…...

为什么你需要一个独立的PCK文件处理工具?3个自动化工作流解析

为什么你需要一个独立的PCK文件处理工具&#xff1f;3个自动化工作流解析 【免费下载链接】GodotPckTool Standalone tool for extracting and creating Godot .pck files 项目地址: https://gitcode.com/gh_mirrors/go/GodotPckTool 在Godot游戏开发中&#xff0c;PCK资…...

构建全栈可解释AI框架:从数据到决策的透明化实践

1. 项目概述&#xff1a;为什么我们需要一个“全栈”可解释AI框架&#xff1f; 在医疗诊断、金融风控、自动驾驶这些领域&#xff0c;一个AI模型给出的“是”或“否”的答案&#xff0c;往往只是一个决策的起点&#xff0c;而非终点。医生需要知道模型是基于哪些影像特征判断出…...

如何高效处理大型AI模型:ONNX外部数据实战指南

如何高效处理大型AI模型&#xff1a;ONNX外部数据实战指南 【免费下载链接】onnx Open standard for machine learning interoperability 项目地址: https://gitcode.com/gh_mirrors/onn/onnx 当深度学习模型参数规模突破2GB时&#xff0c;你是否遇到过"protobuf太…...

从下载到网页管理:TrueNAS SCALE最新版保姆级安装图文教程(VMware Workstation 17环境)

TrueNAS SCALE在VMware Workstation 17中的全流程部署指南 对于需要在本地环境中快速搭建网络存储测试平台的用户来说&#xff0c;TrueNAS SCALE无疑是一个理想选择。作为TrueNAS家族的最新成员&#xff0c;它不仅继承了传统存储管理系统的稳定性和可靠性&#xff0c;还引入了…...

Obsidian Calendar Plugin:时间维度驱动的笔记工作流架构革新

Obsidian Calendar Plugin&#xff1a;时间维度驱动的笔记工作流架构革新 【免费下载链接】obsidian-calendar-plugin Simple calendar widget for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-calendar-plugin Obsidian Calendar Plugin 作为 Obs…...