Пример #1
0
 public static void PlaySceneEffect(EFFECT_ID id, Vector3 localPos, Transform parent = null, InstCallBack callback = null, bool billboard = false, float offsetY = 0f)
 {
     EffectAssetMgr.LoadAsset(id, (AssetBundle bundle, ParamData data) =>
     {
         if (bundle.mainAsset == null)
         {
             ClientLog.Instance.LogError("Effect bundle is broken.   ID : " + id);
             return;
         }
         GameObject effObj = (GameObject)GameObject.Instantiate(bundle.mainAsset);
         EffectAssetMgr.DeleteAsset(bundle, false);
         effObj.transform.parent        = data.tTransform_;
         effObj.transform.localPosition = new Vector3(localPos.x, localPos.y + offsetY, localPos.z);
         if (billboard)
         {
             effObj.AddComponent <Billboard>();
         }
         if (callback != null)
         {
             callback(effObj);
         }
     }, new ParamData(parent));
 }
Пример #2
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));
    }