using System.Collections; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public class EquipSuitEffect : MonoBehaviour { [SerializeField] UIEffect m_SuitEffect; int itemId = 0; private void OnEnable() { Display(itemId); } public void Display(int itemId, bool dirty = false) { this.itemId = itemId; var isSuitEquip = ItemLogicUtility.Instance.IsSuitEquip(itemId); if (isSuitEquip) { m_SuitEffect.Play(); } else { m_SuitEffect.StopImediatly(); } if (dirty) { SnxxzGame.Instance.StartCoroutine(Co_SetOrder(this, transform as RectTransform)); } } public static EquipSuitEffect Create(RectTransform transform) { var go = UIUtility.CreateWidget("EquipSuitEffect", "EquipSuitEffect"); var behaviour = go.GetComponent(); SnxxzGame.Instance.StartCoroutine(Co_SetOrder(behaviour, transform)); var scale = 1f; var itemBasic = transform.GetComponentInParent(); if (itemBasic != null) { scale = GetEffectScale(itemBasic.format); } else { var itemBehaviour = transform.GetComponentInParent(); if (itemBehaviour != null) { if (itemBehaviour.backGround != null) { var size = itemBehaviour.backGround.rectTransform.rect.width; scale = size / 84; } } } var rect = go.transform as RectTransform; go.transform.SetParentEx(transform, Vector3.zero, Quaternion.identity, Vector3.one); rect.MatchWhith(transform); go.transform.localScale = Vector3.one * scale; go.transform.SetAsLastSibling(); return behaviour; } static IEnumerator Co_SetOrder(EquipSuitEffect behaviour, RectTransform transform) { yield return null; if (transform == null || behaviour == null) { yield break; } Canvas canva = transform.GetComponentInParent(); if (canva != null) { behaviour.m_SuitEffect.ResetOrder(canva.sortingOrder + 1); } if (behaviour.m_SuitEffect.maskArea == null) { behaviour.m_SuitEffect.SetMask(); } } static float GetEffectScale(ItemCellformat format) { switch (format) { case ItemCellformat.Format_80x80: return 0.95f; case ItemCellformat.Format_70x70: return 0.8f; case ItemCellformat.Format_64x64: return 0.75f; default: return 1f; } } } }