public SoundPlayCommand GetSlot(ISoundData data) { // ISoundSlot unusedSlot = _slotPool.IsEmptyPool() ? ISoundSlot unusedSlot = _slotPool .Spawn() .SetGlobalVolume(_globalVolume_0_1); if (data != null) { AudioClip playClip = data.GetAudioClip(this); if (playClip == null) { Debug.LogError($"[{_monoOwner.name}.{nameof(GetSlot)}]soundKey:{data.GetSoundKey()} Clip is null", _monoOwner); } string soundCategory = data.GetSoundCategory(); string soundKey = data.GetSoundKey(); float localVolume = CalculateLocalVolume(data, soundCategory, soundKey); bool isMute = CalculateMute(soundCategory, soundKey); unusedSlot.InitSlot(playClip, soundCategory, soundKey); unusedSlot.SetLocalVolume(localVolume); unusedSlot.SetMute(isMute); } SoundPlayCommand playCommand = _commandPool.Spawn(); playCommand.Init(unusedSlot, DespawnCommand); OnPlaySound?.Invoke(unusedSlot); return(playCommand); }
private void OnEffect(ElimlnateGrid target, TweenEffectBase <ElimlnateEffectParam> tw, ElimlnateEffectParam param) { Sequence queue = DOTween.Sequence(); #if APPLY_GRID_RANK float interval = 0.1f; queue.AppendInterval(interval * param.Index); #endif #if DO_PUNCH_ROT float z = Utils.RangeRandom(45f, 90f); Vector3 punch = new Vector3(0f, 0f, z); queue.Append(target.GridTrans.DOPunchRotation(punch, 0.4f, 15)); //摇晃 queue.AppendInterval(0.05f * param.Index); //摇晃后间隔时间 #endif queue.Append(target.GridTrans.DOScale(Vector3.one * 1.2f, 0.18f)); //1.5f, 0.25f queue.Append(target.GridTrans.DOScale(Vector3.zero, 0.1f)); //zero, 0.15f BeforeFinish(ref queue, ref target, ref param); #if DIRECT_FINISH queue.AppendCallback(Finish); //直接结束 #else queue.Join(target.GridSprite.DOFade(0f, 0.1f)) //褪为透明 .OnComplete(Finish); #endif void Finish() { if (UpperStrata.HasFollowUpEffect) { UpperStrata.CheckFollowEffect(); } else { UpperStrata.AfterGridEffectFinished?.Invoke(); target.WillDestroy(); queue.Kill(); } } OnPlaySound?.Invoke(); }
public static void PlaySound(SoundType obj) { OnPlaySound?.Invoke(obj); }
public static void RaisePlaySoundEvent(AudioClip soundToPlay) => OnPlaySound?.Invoke(soundToPlay);