
1.制作玩家UI (1.制作玩家血条UI ((1.作为一个独立的Canvas物体 ((2.当检查到记录中血量和真实剩余血量不一样,重刷新血量UI ((3.保存子物体列表,一共10个爱心 ((4.保存两张UI图片 ((5.当触发重刷新UI,遍历10个爱心,把前Left个数的爱心换成红色,其他的换成白色 ((6.将血条UI放置到每一个场景 (2.制作镰刀CDUI ((1.初始化时,获取玩家镰刀CD总时长 ((2.当玩家发射镰刀,额外让玩家找到UI组件,并发送信号,触发Tween动画,以圆圈形式从0到1重显现CDUI ((3.适配到每一个场景 2.制作boss血条 (1.逻辑基本上与玩家的一致 (2.额外增加一个boss名字文字栏 (3.当Boss进入攻击状态,开始显示血条和名字 *优化和修复 1.镰刀攻击同时按卡动画 2.修复读板时按确定会出错的问题 3.修复疯狂发射镰刀会卡动画的问题 4.修复玩家死后着地会滑动的问题 5.修复了未开启开幕演出,死亡后报错的问题 6.修复各个场景玩家UI和专场块的遮挡问题 下班
43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using Sirenix.OdinInspector;
|
||
using UnityEngine.UI;
|
||
using DG.Tweening;
|
||
|
||
public class PlayerHpBar : MonoBehaviour
|
||
{
|
||
[SerializeField]
|
||
private float HPLeft = -1f;
|
||
private MyPlayer player;
|
||
[SerializeField][ListDrawerSettings]
|
||
private List<Image> hearts;
|
||
public Sprite full;
|
||
public Sprite empty;
|
||
|
||
void Start(){
|
||
hearts = new List<Image>();
|
||
//找到必要的物体和组件
|
||
player = FindObjectOfType<MyPlayer>();
|
||
for(int i = 0; i < 10; i++){
|
||
hearts.Add(transform.GetChild(i).GetComponent<Image>());
|
||
}
|
||
}
|
||
|
||
void Update(){
|
||
//每帧检查,当UI剩余血量和玩家真实剩余血量不一致,触发重刷新UI功能
|
||
if(HPLeft != player.HPLeft) RefrashUI((int) player.HPLeft);
|
||
HPLeft = player.HPLeft;
|
||
}
|
||
|
||
void RefrashUI(int left){
|
||
Debug.Log("触发");
|
||
foreach(Image t in hearts){
|
||
if(left > 0) t.sprite = full;
|
||
else t.sprite = empty;
|
||
left--;
|
||
}
|
||
}
|
||
|
||
}
|