2026/2/16 18:21:49
网站建设
项目流程
上海网站建设乐云seo,关于文案的网站,专门做简历的网站软件,中山网站建设如何一 UI - 创建人物状态栏创建canvas切换自己创建的控制器切换比例通过Alt控制位置裁切ui设置 自动裁切并手动处理#xff0c;然后再为需要的命名设置为固定比例#xff0c;修改大小和位置复制一份并且注意层级#xff0c;调整大小#xff0c;修改填充设置这里就是一些个性化…一 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 UnityActionCharacter OnEventRaised; public void RaiseEvent(Character character) { OnEventRaised?.Invoke(character); } }在character里面加上public UnityEventCharacter 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 namepersentage百分比Current/Max/param public void OnHealthChange(float persentage) { healthImage.fillAmount persentage; } }这部分学的很不好之后老老实实学c#吧