public void LateUpdate() { if (isPlaying) { if (null != EffectList && EffectList.Count > 0) { int cout = EffectList.Count; for (int i = 0; i < cout; i++) { StaticEffectNode nod = EffectList[i]; if (nod.effect) { if (nod.fllowBone) { nod.effectTransform.SetPosition(nod.fllowBone.position + nod.PosOffset); Vector3 ang = nod.fllowBone.rotation.eulerAngles; ang += nod.AngleOffset; nod.effectTransform.rotation = Quaternion.Euler(ang); } else { Vector3 disPos = lastPos - m_Trans.position; if (disPos.sqrMagnitude > 0.0001f) { nod.effectTransform.SetPosition(m_Trans.position); lastPos = transform.position; } nod.effectTransform.rotation = m_Trans.rotation; } } } } } }
public void Play(U3D_Render.EntityView ev) { if (!bInit) { return; } isPlaying = true; if (ev != null) { LastEv = ev; } if (null != EffectList && EffectList.Count > 0) { int cout = EffectList.Count; for (int i = 0; i < cout; i++) { StaticEffectNode n = EffectList[i]; if (n.PlayTimes > 0) { currPlayTimesList[i]++; if (currPlayTimesList[i] > n.PlayTimes) { continue; } } if (n.effect) { n.effect.PlayEffect(false, LastEv == null ? -1 : LastEv.ID, null, null); } } } }
public void ResetLayer() { if (null != EffectList && EffectList.Count > 0) { int cout = EffectList.Count; for (int i = 0; i < cout; i++) { StaticEffectNode n = EffectList[i]; if (n.effect) { GameUtil.SetLayer(LayerMask.NameToLayer(Config.LayerLightingEffectOnly), n.effect.gameObject, true); } } } }
void ResLoadCallBack(ResConfigData cof, ResNode res, System.Object UserDataObj) { StaticEffectNode n = UserDataObj as StaticEffectNode; if (n == null) { Debug.LogError("Effect_PlayEntityStaticEffect -- 重大bug"); return; } n.res = res; if (null != n.res && n.res.IsValid()) { n.effect = n.res.InstanceMainRes <Effect.EffectNode>(); if (n.effect) { n.effect.isStaticEffect = false; n.effect.PlayOnAwake = false; n.effect.Init(); n.effect.transform.SetParent(LightingEffectFactory.Instance.StaticEffectRoot.transform); n.effect.transform.SetPosition(transform.position); n.effect.transform.rotation = transform.rotation; lastPos = transform.position; lastRot = transform.rotation; n.effectTransform = n.effect.transform; ResetLayer(); if (isPlaying) { Play(LastEv); } } else { Debug.LogWarning("Effect_PlayEntityStaticEffect有非特效结点,请[--策划--]检查皮肤预制体:" + transform.parent.name); } } else { Debug.LogWarning("Effect_PlayEntityStaticEffect有特效加载失败,原因可能是预制体为空或者预制体加载失败,请[--策划--]检查皮肤预制体:" + transform.parent.name); } }
public void Stop() { if (!bInit || !isPlaying) { return; } isPlaying = false; if (null != EffectList && EffectList.Count > 0) { int cout = EffectList.Count; for (int i = 0; i < cout; i++) { StaticEffectNode n = EffectList[i]; if (n.effect) { n.effect.StopEffect(); } } } }
public void Init() { if (bInit) { return; } if (null != EffectList && EffectList.Count > 0) { isPlaying = false; Effect.EffectNode.ResigterEffectQualityChange(OnEffectQualityChange); int cout = EffectList.Count; for (int i = 0; i < cout; i++) { currPlayTimesList.Add(0); StaticEffectNode n = EffectList[i]; n.res = AssetBundleManager.GetAssetsAsync(AssetType.Asset_Prefab, ResLoadCallBack, n.guid, true, n); if (null == n.res) { Debug.LogWarning("Effect_PlayEntityStaticEffect有特效加载失败,原因可能是预制体为空或者预制体加载失败,请[--策划--]检查皮肤预制体:" + transform.parent.name); } } } bInit = true; }