using FairyGUI; using UnityEngine; namespace GFGGame { public class EffectUI { private GameObject _gameObject; private GoWrapper _wrapper; public bool Released; public void Reset(GGraph holder, string uiName, string resName, float scale = 100, EffectUIType effectUIType = EffectUIType.UI ) { if (!Released) Release(); Released = false; string resPath; switch(effectUIType) { case EffectUIType.Card: resPath = ResPathUtil.GetCardAnimationPath(resName); break; default: resPath = ResPathUtil.GetViewEffectPath(uiName, resName); break; } _gameObject = PrefabManager.Instance.SpawnSync(resPath); if(_gameObject == null) { return; } _gameObject.transform.localScale = new Vector3(scale, scale, scale); _wrapper = new GoWrapper(_gameObject); holder.SetNativeObject(_wrapper); var obj = _gameObject.GetComponent(); if (obj != null) { CardDataManager.CardResInitWidth = (int)(obj.size.x * 100); CardDataManager.CardResInitHight = (int)(obj.size.y * 100); holder.x = CardDataManager.CardResInitWidth / 2 - obj.offset.x * 100; holder.y = CardDataManager.CardResInitHight / 2 - obj.offset.y * 100; } } public void Release() { Released = true; if (_gameObject != null) { PrefabManager.Instance.Restore(_gameObject); //GameObject.DestroyImmediate(_gameObject); _gameObject = null; } if (_wrapper != null) { if(_wrapper.wrapTarget != null) { _wrapper.wrapTarget = null; } _wrapper.Dispose(); _wrapper = null; } } public GameObject GetObj() { return _gameObject; } } }