Beispiel #1
0
    public static void PlayUIEffect(EFFECT_ID id, Transform parent = null, Destroy.FinishCallBack finishEvent = null, InstCallBack instCallBack = null)
    {
        EffectMgr.UIEffectInfo uiei = new EffectMgr.UIEffectInfo();
        uiei.parent_       = parent;
        uiei.instCallBack_ = instCallBack;
        uiei.finCallBack_  = finishEvent;
        uiei.finished_     = false;

        EffectAssetMgr.LoadAsset(id, (AssetBundle bundle, ParamData data) =>
        {
            if (bundle.mainAsset == null)
            {
                ClientLog.Instance.LogError("Effect bundle is broken.   ID : " + id);
                return;
            }
            data.uiEffectInfo_.bundle_ = bundle;
            Transform tParent          = data.uiEffectInfo_.parent_;
            if (tParent.Equals(ApplicationEntry.Instance.uiRoot.transform))
            {
                EffectMgr.Instance.uiEffectQue_.Enqueue(data.uiEffectInfo_);
            }
            else
            {
                GameObject effObj = (GameObject)GameObject.Instantiate(bundle.mainAsset);
                EffectAssetMgr.DeleteAsset(bundle, false);
                effObj.transform.parent     = data.uiEffectInfo_.parent_;
                effObj.transform.localScale = Vector3.one;
                if (data.uiEffectInfo_.instCallBack_ != null)
                {
                    data.uiEffectInfo_.instCallBack_(effObj);
                }
                Destroy de = effObj.GetComponent <Destroy>();
                if (de == null)
                {
                    de          = effObj.AddComponent <Destroy>();
                    de.lifetime = 3f;
                }
                de.OnPlayFinish += data.uiEffectInfo_.finCallBack_;
            }
        }, new ParamData(uiei));
    }
Beispiel #2
0
 public ParamData(Transform t, Destroy.FinishCallBack callback)
 {
     tTransform_ = t;
     Callback_   = callback;
 }