using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemBaseEffect : MonoBehaviour { [SerializeField] EffectPlayer m_SuitEffect; int itemId = 0; private void OnEnable() { Display(itemId); } public void Display(int itemId, bool dirty = false) { this.itemId = itemId; var curItem = ItemConfig.Get(this.itemId); bool isPlay = true; if (curItem == null) { isPlay = false; return; } int effectId = 0; switch (curItem.ItemColor) { case 4: effectId = 7119; break; case 5: effectId = 7120; break; case 6: case 7: case 8: effectId = 7121; break; } if (curItem.BaseEffectID != 0) { effectId = curItem.BaseEffectID; } if (m_SuitEffect.effectId != effectId) { //同一个位置替换特效需要先释放 m_SuitEffect.Stop(); } m_SuitEffect.effectId = effectId; if (m_SuitEffect.effectId == 0) { isPlay = false; } if (isPlay) { m_SuitEffect.SetActive(true); } else { m_SuitEffect.SetActive(false); } } public static ItemBaseEffect Create(RectTransform transform) { var go = UIUtility.CreateWidget("ItemBaseEffect", "ItemBaseEffect"); var behaviour = go.GetComponent(); var scale = 1f; var itemBasic = transform.GetComponentInParent(); if (itemBasic == null) 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 float GetEffectScale(ItemCellformat format) { switch (format) { case ItemCellformat.Format_120x120: return 1.2f; case ItemCellformat.Format_100x100: return 1.1f; case ItemCellformat.Format_84x84: return 1f; case ItemCellformat.Format_80x80: return 0.95f; case ItemCellformat.Format_70x70: return 0.83f; case ItemCellformat.Format_64x64: return 0.76f; default: return 1f; } } }