news 2026/4/15 16:52:48

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/4/14 15:51:51

13、Visual Basic编程入门:从基础到实践

Visual Basic编程入门:从基础到实践 1. 颜色设置与控件事件 1.1 颜色设置 在编程中,颜色的设置往往是通过特定的编码来实现的。在相关的编程环境里,颜色的强度可以用十六进制数字来表示。其中,RR 十六进制数字表示红色的强度,范围从 00h 到 FFh(即 0 到 255);GG 表示…

作者头像 李华
网站建设 2026/4/10 10:39:10

14、可视化编程实践:从基础练习到菜单设计

可视化编程实践:从基础练习到菜单设计 1. 编程基础练习 在编程学习过程中,基础练习是提升技能的重要途径。以下是一些相关编程练习的介绍: - 电阻颜色代码程序 :需要完善程序以实现完整的电阻颜色代码功能,可参考特定表格。之后要对程序进行修改,使其能循环运行直至…

作者头像 李华
网站建设 2026/4/15 12:24:32

HTTP/3 兼容性避坑手册:运维工程师必须掌握的7种检测与回退策略

第一章&#xff1a;HTTP/3 兼容性挑战的全景透视HTTP/3 作为下一代互联网传输协议&#xff0c;基于 QUIC 协议构建&#xff0c;显著提升了连接速度与安全性。然而&#xff0c;其广泛部署仍面临诸多兼容性挑战&#xff0c;涉及客户端、服务器、中间网络设备以及安全策略等多个层…

作者头像 李华
网站建设 2026/4/15 13:13:06

基于机器视觉技术的课堂学情实时分析

传统课堂学情分析长期依赖教师的课堂观察与人工记录&#xff0c;这种方式不仅耗费精力&#xff0c;而且不可避免地带有较强的主观性与滞后性。教师往往难以及时、精准地捕捉学生在课堂中的真实学习状态&#xff0c;教学督导也难以全面、客观地评估课堂教学质量&#xff0c;而在…

作者头像 李华