news 2026/5/7 7:06:43

Unity学习 2Dadventure 4

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Unity学习 2Dadventure 4

一 UI - 创建人物状态栏

创建canvas

切换自己创建的控制器

切换比例

通过Alt控制位置

裁切ui设置

自动裁切并手动处理,然后再为需要的命名

设置为固定比例,修改大小和位置

复制一份并且注意层级,调整大小,修改填充设置

这里就是一些个性化的东西,裁切头像就是找到一个人物照片之后使用Mask把底下的face切割后移动

二 UI - 血量更新逻辑的实现

创建脚本PlayStatBar,利用UI里面的Fill Amount把血量百分比值给他来体现血量的变化

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayStatBar : MonoBehaviour { public Image healthImage; public Image healthDelayImage; }

把组件给他

Event事件

创建一个脚本

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; [CreateAssetMenu(fileName ="Event/CharacterEventSO")] public class CharacterEventSO : ScriptableObject { public UnityAction<Character> OnEventRaised; public void RaiseEvent(Character character) { OnEventRaised?.Invoke(character); } }

在character里面加上

public UnityEvent<Character> OnHealthChange;

创建并调用characterEventSO

在UI脚本里创建UIManager统一管理

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class UIManager : MonoBehaviour { public PlayStatBar playStatBar; [Header("事件监听")] public CharacterEventSO healthEvent; void OnEnable() { healthEvent.OnEventRaised += OnHealthEvent; } void OnDisable() { healthEvent.OnEventRaised -= OnHealthEvent; } private void OnHealthEvent(Character character) { var persentage = character.currentHealth / character.maxHealth; playStatBar.OnHealthChange(persentage); } }

character里面添加逻辑

private void Start() { currentHealth = maxHealth; OnHealthChange?.Invoke(this); } public void TakeDamage(Attack attacker) { if(invulnerable) return; if(currentHealth - attacker.damage >0) { currentHealth -= attacker.damage; TriggrInvulnerable(); OnTakeDamage?.Invoke(attacker.transform); } else { currentHealth = 0; OnDie?.Invoke(); } OnHealthChange?.Invoke(this); }

红色血条跟随变化

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayStatBar : MonoBehaviour { public Image healthImage; public Image healthDelayImage; void Update() { if(healthDelayImage.fillAmount > healthImage.fillAmount) { healthDelayImage.fillAmount -= Time.deltaTime; } } /// <summary> /// 接受Health的变化百分比 /// </summary> /// <param name="persentage">百分比:Current/Max</param> public void OnHealthChange(float persentage) { healthImage.fillAmount = persentage; } }

这部分学的很不好,之后老老实实学c#吧🌀👃🌀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 7:06:43

9、计算机数字表示、架构与内存管理知识详解

计算机数字表示、架构与内存管理知识详解 1. 二进制与数字表示 在计算机领域,数字的表示方式多种多样。二进制是计算机最基础的表示形式,例如二进制数 110110 对应的十进制数是 54。 1.1 二进制算术 二进制加法是二进制算术的基本操作,用于两个二进制数相加。 1.2 数字…

作者头像 李华
网站建设 2026/5/1 9:37:15

PHP安全审计实战:从0到1构建医疗数据防护体系(含真实案例)

第一章&#xff1a;医疗数据安全面临的挑战与PHP审计必要性 在数字化转型加速的背景下&#xff0c;医疗行业越来越多地依赖基于Web的信息系统来管理患者记录、诊断结果和治疗方案。这些系统中&#xff0c;PHP作为广泛应用的服务器端脚本语言&#xff0c;常用于构建医院管理平台…

作者头像 李华
网站建设 2026/5/6 0:27:49

扩展QDK有多难?3个关键接口让你快速上手

第一章&#xff1a;扩展QDK有多难&#xff1f;从认知到实践的跨越量子开发工具包&#xff08;Quantum Development Kit, QDK&#xff09;由微软提供&#xff0c;旨在简化量子算法的开发与仿真。尽管其抽象层次较高&#xff0c;但要真正扩展QDK以支持自定义量子操作或集成新后端…

作者头像 李华
网站建设 2026/5/4 4:57:55

企业级加密部署避坑指南,99%团队都会犯的7个致命错误

第一章&#xff1a;企业级加密的核心挑战在现代企业信息系统中&#xff0c;数据安全已成为基础设施的关键组成部分。随着数据量的激增和监管要求的日益严格&#xff0c;企业级加密面临多重技术与管理上的挑战。这些挑战不仅涉及算法选择和密钥管理&#xff0c;还包括性能开销、…

作者头像 李华
网站建设 2026/4/27 7:53:02

为什么你的PHP 8.6应用越来越慢?真相竟是内存泄漏在作祟!

第一章&#xff1a;PHP 8.6应用性能下降的根源探析 近期多个生产环境反馈&#xff0c;在升级至 PHP 8.6 后&#xff0c;部分 Web 应用出现响应延迟增加、内存占用上升等性能退化现象。尽管 PHP 官方宣称该版本在底层优化了 JIT 编译策略并提升了类型推断效率&#xff0c;但在特…

作者头像 李华