news 2026/7/24 15:15:47

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/7/23 7:20:55

GraphQL + PHP错误处理全解析,构建高可用API的必备技能

第一章&#xff1a;GraphQL PHP错误处理概述在构建现代Web应用时&#xff0c;GraphQL作为一种强大的API查询语言&#xff0c;正逐渐取代传统的REST架构。当与PHP结合使用时&#xff0c;开发者能够快速搭建高效、灵活的后端服务。然而&#xff0c;在实际开发过程中&#xff0c;…

作者头像 李华
网站建设 2026/7/23 21:42:00

16、编程中的颜色与图形绘制及HTML基础入门

编程中的颜色与图形绘制及HTML基础入门 1. 颜色设置 1.1 物体颜色属性 在编程中,可以分别使用 BackColor 或 ForeColor 属性来修改对象的背景和前景颜色。颜色通过 RGB(红/绿/蓝)强度来定义,每种颜色的十六进制强度范围是从 &H00 到 &H77 ,有效的颜色范…

作者头像 李华
网站建设 2026/7/22 9:19:18

PHP 8.6的JIT缓存机制揭秘:5大策略提升应用执行效率300%

第一章&#xff1a;PHP 8.6的JIT架构演进与核心变革PHP 8.6 即将带来对 JIT&#xff08;Just-In-Time&#xff09;编译器的重大架构升级&#xff0c;标志着 PHP 从解释型语言向高性能执行迈出了关键一步。本次更新聚焦于提升动态代码编译效率、优化运行时类型推断&#xff0c;并…

作者头像 李华
网站建设 2026/7/23 5:15:18

基于微信小程序的动漫社区交流小程序的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦动漫爱好者交流渠道分散、优质内容聚合不足的痛点&#xff0c;设计实现基于微信小程序的动漫社区交流小程序。依托微信小程序轻量化、易传播的特性&#xff0c;为动漫爱好者搭建便捷的线上交流平台。系统后端搭建稳定的数据管理架构&#xff0c;支撑用户信息…

作者头像 李华
网站建设 2026/7/23 21:21:15

响应格式化踩坑实录:Symfony 8开发者必须避开的5个陷阱

第一章&#xff1a;响应格式化踩坑实录&#xff1a;Symfony 8开发者必须避开的5个陷阱 在 Symfony 8 的开发过程中&#xff0c;响应格式化是构建 RESTful API 的核心环节。然而&#xff0c;许多开发者因忽略细节而陷入常见陷阱&#xff0c;导致性能下降或接口行为异常。 忽视 …

作者头像 李华