using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RolePropertyBehaviour : MonoBehaviour { [SerializeField] PropertyType m_PropertyType; [SerializeField] Text m_PropertyName; [SerializeField] Text m_PropertyValue; bool propertyDirty = false; float timer = 0f; public void Display() { DisplayProperty(); PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshEvent; } void DisplayProperty() { propertyDirty = false; m_PropertyName.text = Language.Get("RolePropertyName_" + m_PropertyType.ToString()); m_PropertyValue.text = GetPropertyValue(m_PropertyType); } private void LateUpdate() { timer += Time.deltaTime; if (timer > 1f) { timer = 0f; if (propertyDirty) { DisplayProperty(); } } } static string GetPropertyValue(PropertyType propertyType) { if (propertyType == PropertyType.MinAtk || propertyType == PropertyType.MaxAtk) { var minAtk = (int)PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MINATK); var maxAtk = (int)PlayerDatas.Instance.GetPlayerDataByType(PlayerDataType.MAXATK); var minAtkLabel = PlayerPropertyConfig.GetValueDescription((int)propertyType, minAtk, true); var maxAtkLabel = PlayerPropertyConfig.GetValueDescription((int)propertyType, maxAtk, true); return StringUtility.Contact(minAtkLabel, "-", maxAtkLabel); } else if (propertyType == PropertyType.HP) { return UIHelper.GetPropertyValue(propertyType).ToString(); } else { var value = (int)UIHelper.GetPropertyValue(propertyType); switch (propertyType) { case PropertyType.ATKSPEED: return PlayerPropertyConfig.GetValueDescription((int)propertyType, value, true); default: return PlayerPropertyConfig.GetValueDescription((int)propertyType, value, true); } } } private void PlayerDataRefreshEvent(PlayerDataType dataType) { propertyDirty = true; } public void Dispose() { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshEvent; } } }