Exemplo n.º 1
0
        void OnDestroy()
        {
            LogDC.LogEx("destroy timer", mTimerToDestroy.Count);

            DCTimer.RemoveNextFixedUpdate(DoSkillEffectForTimer);

            foreach (var timer in mTimerToDestroy)
            {
                timer.Destroy();
            }

            mCaster.RemoveSkill(mCastCfg.mFromKey);
        }
Exemplo n.º 2
0
        public void CreateVFX(Transform anchorTf, List <IActor> targets)
        {
            var     cfg = mHandlerCfg.mVisualEffectCfg;
            Vector3 worldPos;

            if (null == anchorTf)
            {
                worldPos = cfg.mLocalPosOfXX;
            }
            else
            {
                worldPos = anchorTf.localToWorldMatrix.MultiplyPoint(cfg.mLocalPosOfXX);
            }

            LogDC.LogEx("display vfx: ", cfg.mEffectPath);
            var prefab = ResourceSys.Instance.Load <GameObject>(cfg.mEffectPath);
            var vfx    = Object.Instantiate(prefab, worldPos, Quaternion.identity);

            //链状技能
            if (cfg.mPointCnt > 1)
            {
                //设置节点位置
                var tf  = vfx.transform;
                var cnt = Mathf.Min(cfg.mPointCnt, targets.Count, tf.childCount);
                for (var i = 0; i < cnt; i++)
                {
                    var childTf = tf.GetChild(i);
                    childTf.position = targets[i].GetTransform().position;
                }

                //隐藏多余节点
                cnt = Mathf.Min(cfg.mPointCnt, targets.Count);
                for (var i = cnt; i < tf.childCount; i++)
                {
                    var childTf = tf.GetChild(i);
                    childTf.gameObject.SetActive(false);
                }
            }

            DCTimer.RunAction(cfg.mDuration, () => { Object.Destroy(vfx); });
        }
Exemplo n.º 3
0
 private void PostDoSkillEffect()
 {
     DCTimer.RunNextFixedUpdate(DoSkillEffectForTimer);
 }