コード例 #1
0
        public AudioLoopToken LoopSound(PooledAudioRequest request)
        {
            _currentRequest = request;

            // bail gracefully if request is null
            if (request == null)
                return new AudioLoopToken
                {
                    Replace = replacementRequest => LoopSound(replacementRequest),
                    End = () => { }
                };

            _audio.loop = true;
            _audio.transform.position = request.IsSpatial ? request.Target : _cameraTransform.position;

            _audio.clip = request.Sound;
            _audio.volume = request.Volume * (request.IsMusic
                                ? _config.MusicVolume
                                : _config.GameVolume);
            _audio.Play();

            return new AudioLoopToken
            {
                Replace = replacementRequest => LoopSound(replacementRequest),
                End = () => Stop()
            };
        }
コード例 #2
0
        public AudioLoopToken LoopSound(PooledAudioRequest request)
        {
            for (var i = 0; i < NumberOfSources; i++)
                if (!_sources[i].IsActive)
                {
                    var source = _sources[i];
                    return source.LoopSound(request);
                }

            _logger.Log("NOTE! ran out of audio sources in pool!", true);
            return new AudioLoopToken
            {
                Replace = newRequest => LoopSound(newRequest),
                End = () => {}
            };
        }
コード例 #3
0
 public void Stop()
 {
     _audio.Stop();
     _currentRequest = null;
 }
コード例 #4
0
        public void PlaySound(PooledAudioRequest request)
        {
            _currentRequest = request;

            // bail if the sound is null
            if (request == null)
                return;

            _audio.loop = false;
            _audio.transform.position = request.IsSpatial ? request.Target : _cameraTransform.position;

            _audio.clip = request.Sound;
            _audio.volume = request.Volume * (request.IsMusic
                                ? _config.MusicVolume
                                : _config.GameVolume);
            _audio.Play();
        }
コード例 #5
0
        public void PlaySound(PooledAudioRequest request)
        {
            for (var i = 0; i < NumberOfSources; i++)
                if (!_sources[i].IsActive)
                {
                    _sources[i].PlaySound(request);
                    return;
                }

            _logger.Log("NOTE! ran out of audio sources in pool!", true);
        }