news 2026/6/11 1:13:24

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/6/10 15:46:33

低代码组件事件处理实战指南(90%开发者忽略的关键细节)

第一章&#xff1a;低代码组件事件处理的核心概念在低代码平台中&#xff0c;组件事件处理是实现交互逻辑的关键机制。它允许开发者通过可视化配置或少量代码定义用户操作&#xff08;如点击、输入、选择&#xff09;触发的响应行为&#xff0c;从而构建动态应用界面。事件与动…

作者头像 李华
网站建设 2026/6/10 19:04:39

告别单一数据格式:构建支持文本、音频、图像的R Shiny应用全攻略

第一章&#xff1a;告别单一数据格式&#xff1a;R Shiny多模态导入的演进与挑战随着数据分析场景日益复杂&#xff0c;传统的单一封闭式数据输入方式已无法满足现代交互式应用的需求。R Shiny 作为 R 语言中构建 Web 应用的核心框架&#xff0c;正逐步从仅支持 CSV 文件上传&a…

作者头像 李华
网站建设 2026/6/10 17:34:54

R语言在环境监测中的高级应用(时空数据分析与可视化全攻略)

第一章&#xff1a;环境监测的 R 语言时空可视化在环境科学研究中&#xff0c;对空气质量、水体污染或噪声水平等数据进行时空分析至关重要。R 语言凭借其强大的统计计算与图形绘制能力&#xff0c;成为处理此类任务的首选工具。通过整合空间坐标与时间序列信息&#xff0c;研究…

作者头像 李华
网站建设 2026/6/9 22:27:55

【高性能Java编程】:泛型使用中的5大性能陷阱及规避方案

第一章&#xff1a;泛型的性能在现代编程语言中&#xff0c;泛型不仅提升了代码的可重用性与类型安全性&#xff0c;也对程序运行时性能产生深远影响。合理使用泛型可以避免重复的类型转换和装箱/拆箱操作&#xff0c;从而提升执行效率。减少运行时类型检查 传统使用接口或基类…

作者头像 李华
网站建设 2026/6/10 16:18:13

从零开始部署Qwen3-VL-30B:Linux环境配置与Python安装详解

从零开始部署 Qwen3-VL-30B&#xff1a;Linux 环境配置与 Python 安装实战 在当今 AI 技术飞速演进的背景下&#xff0c;多模态大模型正逐步成为智能系统的核心大脑。尤其是像 Qwen3-VL-30B 这类兼具超大规模参数和高效推理能力的视觉语言模型&#xff0c;已经不再是实验室里的…

作者头像 李华
网站建设 2026/6/10 16:16:07

面试问题相关回答

一、Redis与MySQL数据同步及一致性保障 &#xff08;一&#xff09;核心同步流程&#xff1a;数据库优先消息队列解耦 更新优先级&#xff1a;所有数据更新优先写入MySQL&#xff0c;确保数据持久化&#xff08;数据库为最终可信来源&#xff09;&#xff1b;通知机制&#xff…

作者头像 李华