using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class teamUIController : MonoBehaviour
{
public static teamUIController Instance {
get;
private set;
}
[Header("基本文本")]
[Tooltip("title")]
public TextMeshProUGUI songNametitle;
public TextMeshProUGUI difficultyName;
public TextMeshProUGUI difficultyID;
public TextMeshProUGUI constructionName;
[Tooltip("连击计数")]
public Text comboCounter;
[Tooltip("敌人出场数量")]
public Text enemyCounter;
[SerializeField] private int enemyCounterMax; // 本局游戏敌人最大数
[SerializeField] private int enemyCurrentCount; // 现在的敌人顺序
[Tooltip("当前总分")]
public Text currentTotalScore;
[Header("Combo判定最低要求")]
public ComboJudgeType comboJudgeType = ComboJudgeType.Perfect;
private int combo = 0;
public enum ComboJudgeType
{
Perfect,
Great,
Good,
// Miss
}
[Header("teammate01")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_ally01;
[Tooltip("开关")]
public bool isAlly01_active = true;
[Tooltip("角色图")]
public Image teammate01_characterImage;
[Tooltip("血条")]
public Image teammate01_healthImage;
[Tooltip("虚血条")]
public Image teammate01_fadehealthImage;
[Tooltip("法力条")]
public Image teammate01_manaImage;
[Tooltip("虚法力条")]
public Image teammate01_fadeManaImage;
[Tooltip("名字文本")]
public TextMeshProUGUI teammate01_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI teammate01_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI teammate01_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int ally01_id;
[Tooltip("受击闪红")]
public Image teammate01_hurtRedImage;
[Tooltip("当前生命值")]
[SerializeField] private int teammate01_currentHP;
[Tooltip("最大生命值")]
[SerializeField] private int teammate01_maxHP;
[Tooltip("当前法力值")]
[SerializeField] private int teammate01_currentMana;
[Tooltip("最大法力值")]
[SerializeField] private int teammate01_maxMana;
[Header("teammate02")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_ally02;
[Tooltip("开关")]
public bool isAlly02_active = true;
[Tooltip("角色图")]
public Image teammate02_characterImage;
[Tooltip("血条")]
public Image teammate02_healthImage;
[Tooltip("虚血条")]
public Image teammate02_fadehealthImage;
[Tooltip("法力条")]
public Image teammate02_manaImage;
[Tooltip("虚法力条")]
public Image teammate02_fadeManaImage;
[Tooltip("名字文本")]
public TextMeshProUGUI teammate02_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI teammate02_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI teammate02_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int ally02_id;
[Tooltip("受击闪红")]
public Image teammate02_hurtRedImage;
[Tooltip("当前生命值")]
[SerializeField] private int teammate02_currentHP;
[Tooltip("最大生命值")]
[SerializeField] private int teammate02_maxHP;
[Tooltip("当前法力值")]
[SerializeField] private int teammate02_currentMana;
[Tooltip("最大法力值")]
[SerializeField] private int teammate02_maxMana;
[Header("teammate03")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_ally03;
[Tooltip("开关")]
public bool isAlly03_active = true;
[Tooltip("角色图")]
public Image teammate03_characterImage;
[Tooltip("血条")]
public Image teammate03_healthImage;
[Tooltip("虚血条")]
public Image teammate03_fadehealthImage;
[Tooltip("法力条")]
public Image teammate03_manaImage;
[Tooltip("虚法力条")]
public Image teammate03_fadeManaImage;
[Tooltip("名字文本")]
public TextMeshProUGUI teammate03_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI teammate03_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI teammate03_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int ally03_id;
[Tooltip("受击闪红")]
public Image teammate03_hurtRedImage;
[Tooltip("当前生命值")]
[SerializeField] private int teammate03_currentHP;
[Tooltip("最大生命值")]
[SerializeField] private int teammate03_maxHP;
[Tooltip("当前法力值")]
[SerializeField] private int teammate03_currentMana;
[Tooltip("最大法力值")]
[SerializeField] private int teammate03_maxMana;
[Header("teammate04")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_ally04;
[Tooltip("开关")]
public bool isAlly04_active = true;
[Tooltip("角色图")]
public Image teammate04_characterImage;
[Tooltip("血条")]
public Image teammate04_healthImage;
[Tooltip("虚血条")]
public Image teammate04_fadehealthImage;
[Tooltip("法力条")]
public Image teammate04_manaImage;
[Tooltip("虚法力条")]
public Image teammate04_fadeManaImage;
[Tooltip("名字文本")]
public TextMeshProUGUI teammate04_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI teammate04_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI teammate04_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int ally04_id;
[Tooltip("受击闪红")]
public Image teammate04_hurtRedImage;
[Tooltip("当前生命值")]
[SerializeField] private int teammate04_currentHP;
[Tooltip("最大生命值")]
[SerializeField] private int teammate04_maxHP;
[Tooltip("当前法力值")]
[SerializeField] private int teammate04_currentMana;
[Tooltip("最大法力值")]
[SerializeField] private int teammate04_maxMana;
[Header("teammate05")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_ally05;
[Tooltip("开关")]
public bool isAlly05_active = true;
[Tooltip("角色图")]
public Image teammate05_characterImage;
[Tooltip("血条")]
public Image teammate05_healthImage;
[Tooltip("虚血条")]
public Image teammate05_fadehealthImage;
[Tooltip("法力条")]
public Image teammate05_manaImage;
[Tooltip("虚法力条")]
public Image teammate05_fadeManaImage;
[Tooltip("名字文本")]
public TextMeshProUGUI teammate05_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI teammate05_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI teammate05_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int ally05_id;
[Tooltip("受击闪红")]
public Image teammate05_hurtRedImage;
[Tooltip("当前生命值")]
[SerializeField] private int teammate05_currentHP;
[Tooltip("最大生命值")]
[SerializeField] private int teammate05_maxHP;
[Tooltip("当前法力值")]
[SerializeField] private int teammate05_currentMana;
[Tooltip("最大法力值")]
[SerializeField] private int teammate05_maxMana;
[Header("currentEnemy")]
[Tooltip("父物体-控制整体显隐")]
public GameObject objectFather_enemy;
[Tooltip("开关")]
public bool isEnemy_active = true;
[Tooltip("角色图")]
public Image currentEnemy_characterImage;
[Tooltip("血条")]
public Image currentEnemy_healthImage;
[Tooltip("虚血条")]
public Image currentEnemy_fadehealthImage;
[Tooltip("名字文本")]
public TextMeshProUGUI currentEnemy_nameText;
[Tooltip("当前生命值/最大生命值")]
public TextMeshProUGUI currentEnemy_healthRate;
[Tooltip("当前分数/轨道分数上限")]
public TextMeshProUGUI currentEnemy_current_scoreText; // rate : now score / max score
[Tooltip("角色唯一识别码")]
[SerializeField] private int enemy_id;
[Tooltip("受击闪红")]
public Image currentEnemy_hurtRedImage;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void FixedUpdate()
{
}
private void Awake()
{
if (Instance == null)
Instance = this;
else
Destroy(gameObject);
}
///
/// 由判定系统调用,传入判定结果(如"Perfect"、"Great"、"Good"、"Miss")
///
public void OnJudgeResult(string result)
{
if (IsCombo(result))
{
combo++;
}
else
{
combo = 0;
}
if (comboCounter != null)
comboCounter.text = combo.ToString();
}
///
/// 判断当前判定结果是否达到combo要求
///
private bool IsCombo(string result)
{
switch (comboJudgeType)
{
case ComboJudgeType.Perfect:
return result == "Perfect";
case ComboJudgeType.Great:
return result == "Perfect" || result == "Great";
case ComboJudgeType.Good:
return result == "Perfect" || result == "Great" || result == "Good";
default:
return false;
}
}
}