Настройки
This commit is contained in:
1 parent
4a547f1348
commit
79d03528f6
34 files changed
+17027
-62
No files matched your search
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using Code.Configs;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
@@ -86,6 +87,34 @@ namespace Code.Audio
|
||||
onComplete?.Invoke();
|
||||
_pool.Release(source);
|
||||
}
|
||||
public async UniTaskVoid PlayOneShot(AudioSource audioSource, AudioClip clip, AudioMixerGroup audioMixerGroup, AudioSourceType audioSourceType = AudioSourceType.NoBlend, Action onComplete = null)
|
||||
{
|
||||
audioSource.PlayOneShot(clip);
|
||||
audioSource.spatialBlend = _settings[audioSourceType].spatialBlend;
|
||||
audioSource.outputAudioMixerGroup = audioMixerGroup;
|
||||
|
||||
// TODO Потом сделать. Можно с cancellation, но сейчас лень. Ну правда
|
||||
await UniTask.WaitUntilValueChanged(audioSource, x => x.isPlaying);
|
||||
|
||||
if (!audioSource) return;
|
||||
|
||||
_pool.Release(audioSource);
|
||||
onComplete?.Invoke();
|
||||
}
|
||||
public async UniTaskVoid PlayOneShot(AudioClip clip, AudioMixerGroup audioMixerGroup, CancellationTokenSource cancellationToken, AudioSourceType audioSourceType = AudioSourceType.NoBlend, Action onComplete = null)
|
||||
{
|
||||
AudioSource source = _pool.Get();
|
||||
source.PlayOneShot(clip);
|
||||
source.spatialBlend = _settings[audioSourceType].spatialBlend;
|
||||
source.outputAudioMixerGroup = audioMixerGroup;
|
||||
|
||||
var (isCanceled, _) = await UniTask.WaitUntilValueChanged(source, x => x.isPlaying, cancellationToken: cancellationToken.Token).SuppressCancellationThrow();
|
||||
|
||||
_pool.Release(source);
|
||||
|
||||
if(!isCanceled) onComplete?.Invoke();
|
||||
else cancellationToken.Dispose();
|
||||
}
|
||||
public AudioSource GetSource() => _pool.Get();
|
||||
public void ReleaseSource(AudioSource source) => _pool.Release(source);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user