void OnDestroy() { LogDC.LogEx("destroy timer", mTimerToDestroy.Count); DCTimer.RemoveNextFixedUpdate(DoSkillEffectForTimer); foreach (var timer in mTimerToDestroy) { timer.Destroy(); } mCaster.RemoveSkill(mCastCfg.mFromKey); }
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); }); }
private void PostDoSkillEffect() { DCTimer.RunNextFixedUpdate(DoSkillEffectForTimer); }