| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using FairyGUI;
- using UnityEngine;
- namespace GFGGame
- {
- public class EffectUI
- {
- private GameObject _gameObject;
- private GoWrapper _wrapper;
- public bool Released;
- public bool IsLoaded { get; private set; }
- public void Reset(GGraph holder, string uiName, string resName, float scale = 100,
- EffectUIType effectUIType = EffectUIType.UI, Action<bool> onComplete = null)
- {
- if (!Released) Release();
- Released = false;
- IsLoaded = false;
-
- string resPath;
- switch (effectUIType)
- {
- case EffectUIType.Card:
- resPath = ResPathUtil.GetCardAnimationPath(resName);
- break;
- default:
- resPath = ResPathUtil.GetViewEffectPath(uiName, resName);
- break;
- }
- PrefabManager.Instance.SpawnAsync(resPath, (go) =>
- {
- if (go == null || Released) // 检查是否已被释放
- {
- onComplete?.Invoke(false);
- return;
- }
- _gameObject = go;
- _gameObject.transform.localScale = new Vector3(scale, scale, scale);
- _wrapper = new GoWrapper(_gameObject);
- holder.SetNativeObject(_wrapper);
- var obj = _gameObject.GetComponent<BoxCollider2D>();
- 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;
- }
- IsLoaded = true;
- onComplete?.Invoke(true);
- });
- }
- 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;
- }
-
- IsLoaded = false;
- }
- public GameObject GetObj()
- {
- return _gameObject;
- }
- }
- }
|