示例#1
0
 public void PlaySound(AudioClip clip, SoundEmitterSettings settings, Vector3 position = default)
 {
     _audioSource.clip = clip;
     ApplySettings(_audioSource, settings);
     _audioSource.transform.position = position;
     _lastUseTimestamp = settings.Loop ? Mathf.Infinity : Time.realtimeSinceStartup + clip.length;
     _audioSource.Play();
 }
示例#2
0
    public SoundEmitter PlaySound(AudioClip clip, SoundEmitterSettings settings, Vector3 position = default)
    {
        SoundEmitter soundEmitter = GetSoundEmitter();

        if (soundEmitter != null)
        {
            soundEmitter.PlaySound(clip, settings, position);
        }
        return(soundEmitter);
    }
示例#3
0
 private void ApplySettings(AudioSource source, SoundEmitterSettings settings)
 {
     source.outputAudioMixerGroup = settings.OutputAudioMixerGroup;
     source.mute                  = settings.Mute;
     source.bypassEffects         = settings.BypassEffects;
     source.bypassListenerEffects = settings.BypassListenerEffects;
     source.bypassReverbZones     = settings.BypassReverbZones;
     source.loop                  = settings.Loop;
     source.priority              = settings.Priority;
     source.volume                = settings.Volume;
     source.pitch                 = settings.Pitch;
     source.panStereo             = settings.PanStereo;
     source.spatialBlend          = settings.SpatialBlend;
     source.reverbZoneMix         = settings.ReverbZoneMix;
     source.dopplerLevel          = settings.DopplerLevel;
     source.spread                = settings.Spread;
     source.rolloffMode           = settings.RolloffMode;
     source.minDistance           = settings.MinDistance;
     source.maxDistance           = settings.MaxDistance;
     source.ignoreListenerVolume  = settings.IgnoreListenerVolume;
     source.ignoreListenerPause   = settings.IgnoreListenerPause;
 }