コード例 #1
0
    private void Start()
    {
        toneGenerator = new ToneGenerator(NoteCtrl.Control, AudioSettings.outputSampleRate, channels);

        AudioSource audioSource = gameObject.GetComponent <AudioSource>();

        if (audioSource != null)
        {
            SpatialSoundSettings.SetRoomSize(audioSource, SpatialSoundRoomSizes.None);
        }
    }
コード例 #2
0
 private void Start()
 {
     audioSource = GetComponent <AudioSource>();
     SpatialSoundSettings.SetRoomSize(audioSource, SpatialSoundRoomSizes.Medium);
     GPSMapService.Instance.onPostureUpdate.AddListener(CheckArea);
     gpsObjectData.IsInside.Subscribe(b => {
         if (b)
         {
             ShowConcreteObject();
         }
         else
         {
             ShowUIObject();
         }
     });
 }
コード例 #3
0
        /// <summary>
        /// Set the volume, spatialization, etc., on our AudioSources to match the settings on the event to play.
        /// </summary>
        private void SetSourceProperties()
        {
            Action <Action <AudioSource> > forEachSource = (action) =>
            {
                action(PrimarySource);
                if (SecondarySource != null)
                {
                    action(SecondarySource);
                }
            };

            AudioEvent audioEvent = this.AudioEvent;

            switch (audioEvent.Spatialization)
            {
            case SpatialPositioningType.TwoD:
                forEachSource((source) =>
                {
                    source.spatialBlend = 0f;
                    source.spatialize   = false;
                });
                break;

            case SpatialPositioningType.ThreeD:
                forEachSource((source) =>
                {
                    source.spatialBlend = 1f;
                    source.spatialize   = false;
                });
                break;

            case SpatialPositioningType.SpatialSound:
                forEachSource((source) =>
                {
                    source.spatialBlend = 1f;
                    source.spatialize   = true;
                });
                break;

            default:
                Debug.LogErrorFormat("Unexpected spatialization type: {0}", audioEvent.Spatialization.ToString());
                break;
            }

            if (audioEvent.Spatialization == SpatialPositioningType.SpatialSound)
            {
                forEachSource((source) =>
                {
                    SpatialSoundSettings.SetRoomSize(source, audioEvent.RoomSize);
                    source.rolloffMode = AudioRolloffMode.Custom;
                    source.maxDistance = audioEvent.MaxDistanceAttenuation3D;
                    source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, audioEvent.AttenuationCurve);
                });
            }
            else
            {
                forEachSource((source) =>
                {
                    if (audioEvent.Spatialization == SpatialPositioningType.ThreeD)
                    {
                        source.rolloffMode = AudioRolloffMode.Custom;
                        source.maxDistance = audioEvent.MaxDistanceAttenuation3D;
                        source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, audioEvent.AttenuationCurve);
                        source.SetCustomCurve(AudioSourceCurveType.SpatialBlend, audioEvent.SpatialCurve);
                        source.SetCustomCurve(AudioSourceCurveType.Spread, audioEvent.SpreadCurve);
                        source.SetCustomCurve(AudioSourceCurveType.ReverbZoneMix, audioEvent.ReverbCurve);
                    }
                    else
                    {
                        source.rolloffMode = AudioRolloffMode.Logarithmic;
                    }
                });
            }

            if (audioEvent.AudioBus != null)
            {
                forEachSource((source) => source.outputAudioMixerGroup = audioEvent.AudioBus);
            }

            float pitch = 1f;

            if (audioEvent.PitchRandomization != 0)
            {
                pitch = UnityEngine.Random.Range(audioEvent.PitchCenter - audioEvent.PitchRandomization, audioEvent.PitchCenter + audioEvent.PitchRandomization);
            }
            else
            {
                pitch = audioEvent.PitchCenter;
            }
            forEachSource((source) => source.pitch = pitch);

            float vol = 1f;

            if (audioEvent.FadeInTime > 0)
            {
                forEachSource((source) => source.volume = 0f);
                this.CurrentFade = audioEvent.FadeInTime;
                if (audioEvent.VolumeRandomization != 0)
                {
                    vol = UnityEngine.Random.Range(audioEvent.VolumeCenter - audioEvent.VolumeRandomization, audioEvent.VolumeCenter + audioEvent.VolumeRandomization);
                }
                else
                {
                    vol = audioEvent.VolumeCenter;
                }
                this.VolDest = vol;
            }
            else
            {
                if (audioEvent.VolumeRandomization != 0)
                {
                    vol = UnityEngine.Random.Range(audioEvent.VolumeCenter - audioEvent.VolumeRandomization, audioEvent.VolumeCenter + audioEvent.VolumeRandomization);
                }
                else
                {
                    vol = audioEvent.VolumeCenter;
                }
                forEachSource((source) => source.volume = vol);
            }

            float pan = audioEvent.PanCenter;

            if (audioEvent.PanRandomization != 0)
            {
                pan = UnityEngine.Random.Range(audioEvent.PanCenter - audioEvent.PanRandomization, audioEvent.PanCenter + audioEvent.PanRandomization);
            }
            forEachSource((source) => source.panStereo = pan);
        }