using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; //装备TIP界面 public class EquipTipWin : UIBase { [SerializeField] Image equipImage; [SerializeField] Text itemName; [SerializeField] OutlineEx itemNameOutline; [SerializeField] Text qualityName; [SerializeField] OutlineEx qualityNameOutline; [SerializeField] Text placeName; [SerializeField] Text lvText; [SerializeField] Image bgFlower; //背景花纹变色 [SerializeField] List baseAttrNames; [SerializeField] List baseAttrValues; [SerializeField] GameObject fightAttrGameObj; [SerializeField] List fightAttrLine; [SerializeField] List fightAttrNames; [SerializeField] List fightAttrValues; [SerializeField] UIEffectPlayer uieffect; [SerializeField] RectTransform bgRect; ItemModel equip; protected override void OnPreOpen() { equip = PackManager.Instance.GetItemByGuid(ItemTipUtility.mainTipData.guid); Display(equip); } protected override void OnOpen() { //先缩小,这样不会因为间隔帧产生明显的闪烁 uieffect.transform.localScale = Vector3.zero; //特效显示依赖rect的排版,放在下一帧 RefreshEffect(equip).Forget(); } protected override void OnPreClose() { equip = null; } public void Display(ItemModel equip) { equipImage.SetOrgSprite(equip.config.IconKey); itemName.text = UIHelper.AppendColor(equip.config.ItemColor, equip.config.ItemName, true, 1); itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("equipQualityFormat")); qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor); placeName.text = EquipModel.Instance.GetEquipPlaceName(equip.config.EquipPlace); lvText.text = Language.Get("EquipExchangeWin7", EquipModel.Instance.GetEquipLV(equip)); bgFlower.color = UIHelper.GetUIColor(equip.config.ItemColor); var baseAttrs = EquipModel.Instance.GetEquipBaseAttrs(equip); var baseValues = EquipModel.Instance.GetEquipBaseValues(equip); var fightAttrs = EquipModel.Instance.GetEquipFightAttrs(equip); var fightValues = EquipModel.Instance.GetEquipFightValues(equip); for (var i = 0; i < baseAttrNames.Count; i++) { if (i >= baseAttrs.Count) { baseAttrNames[i].text = ""; baseAttrValues[i].text = ""; } else { baseAttrNames[i].text = PlayerPropertyConfig.Get(baseAttrs[i]).Name; baseAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(baseAttrs[i], baseValues[i]); } } if (fightAttrs.IsNullOrEmpty()) { fightAttrGameObj.SetActive(false); } else { fightAttrGameObj.SetActive(true); for (var i = 0; i < fightAttrNames.Count; i++) { if (i >= fightAttrs.Count) { fightAttrNames[i].SetActive(false); } else { fightAttrNames[i].SetActive(true); fightAttrNames[i].text = PlayerPropertyConfig.Get(fightAttrs[i]).Name; fightAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(fightAttrs[i], fightValues[i]); } } } } //延迟处理特效大小 async UniTask RefreshEffect(ItemModel equip) { await UniTask.DelayFrame(3); int effectID = EquipModel.Instance.equipUIEffects[Math.Min(equip.config.ItemColor, EquipModel.Instance.equipUIEffects.Length) - 1]; if (effectID == 0) { uieffect.Stop(); } else { uieffect.effectId = effectID; //计算高度缩放比例 特效显示依赖rect的排版 uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent().rect.height, 1); uieffect.Play(); } } }