using Lean.Pool; using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse { public class DTMRippleEffect : EffectBase { #region [效果属性与状态] Effect Fields & States private DTMRipple ripple; public float rippleTime; public Vector3 positionOffset; public Vector3 eulerAnglesOffset; public Vector3 scale; public Color emissionColor; public float emissionIntensity; #endregion #region [初始化] Initialization public DTMRippleEffect(float rippleTime, Color emissionColor, float emissionIntensity, Vector3 positionOffset, Vector3 eulerAnglesOffset, Vector3 scale) { this.effectTime = 0; this.rippleTime = rippleTime; this.positionOffset = positionOffset; this.eulerAnglesOffset = eulerAnglesOffset; this.scale = scale; this.emissionColor = emissionColor; this.emissionIntensity = emissionIntensity; } #endregion #region [效果核心逻辑] Core Effect Logic public override void Adjust() { GameObject prefab = GameManager.Instance.customPrefabs["departure_to_multiverse"].GetPrefab("DTM_Ripple"); ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent(); ripple.transform.localPosition = positionOffset; ripple.transform.localEulerAngles = eulerAnglesOffset; ripple.transform.localScale = scale; ripple.transform.SetParent(null); ripple.SetRippleTime(rippleTime); ripple.SetEmissionColor(emissionColor * Mathf.Pow(2, emissionIntensity)); ripple.mainRipple.Play(); LeanPool.Despawn(ripple.gameObject, rippleTime); } #endregion } }