using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; //装备TIP界面 public class OtherEquipTipWin : 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; int equipID; ItemConfig itemConfig; OtherPlayerDetailManager.RolePlusData.EquipData equip; OtherPlayerDetailManager manager { get { return OtherPlayerDetailManager.Instance; } } protected override void OnPreOpen() { equip = manager.otherPlayerViewEquip; if (equip == null) { DelayCloseWindow().Forget(); return; } equipID = equip.ItemID; if (!ItemConfig.HasKey(equipID)) { DelayCloseWindow().Forget(); return; } itemConfig = ItemConfig.Get(equipID); Display(itemConfig); } protected override void OnOpen() { //先缩小,这样不会因为间隔帧产生明显的闪烁 uieffect.transform.localScale = Vector3.zero; //特效显示依赖rect的排版,放在下一帧 RefreshEffect(itemConfig.ItemColor).Forget(); } protected override void OnPreClose() { } public void Display(ItemConfig config) { equipImage.SetOrgSprite(config.IconKey); itemName.text = UIHelper.AppendColor(config.ItemColor, config.ItemName, true, 1); itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(config.ItemColor); qualityName.text = UIHelper.GetQualityNameWithColor(config.ItemColor, Language.Get("L1039")); qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(config.ItemColor); placeName.text = EquipModel.Instance.GetEquipPlaceName(config.EquipPlace); lvText.text = Language.Get("EquipExchangeWin7", manager.GetEquipLV(equip)); bgFlower.color = UIHelper.GetUIColor(config.ItemColor); var baseAttrs = manager.GetEquipBaseAttrs(equip); var baseValues = manager.GetEquipBaseValues(equip); var fightAttrs = manager.GetEquipFightAttrs(equip); var fightValues = manager.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(int itemColor) { await UniTask.DelayFrame(3); int effectID = EquipModel.Instance.equipUIEffects[Math.Min(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(); } } }