123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using UnityEngine.Audio;
- using UnityEngine.Playables;
- namespace UnityEngine.Timeline
- {
- [Serializable]
- class AudioMixerProperties : PlayableBehaviour
- {
- [Range(0.0f, 1.0f)]
- public float volume = 1.0f;
- [Range(-1.0f, 1.0f)]
- public float stereoPan = 0.0f;
- [Range(0.0f, 1.0f)]
- public float spatialBlend = 0.0f;
- public override void PrepareFrame(Playable playable, FrameData info)
- {
- if (!playable.IsValid() || !playable.IsPlayableOfType<AudioMixerPlayable>())
- return;
- var inputCount = playable.GetInputCount();
- for (int i = 0; i < inputCount; ++i)
- {
- if (playable.GetInputWeight(i) > 0.0f)
- {
- var input = playable.GetInput(i);
- if (input.IsValid() && input.IsPlayableOfType<AudioClipPlayable>())
- {
- var audioClipPlayable = (AudioClipPlayable)input;
- var audioClipProperties = input.GetHandle().GetObject<AudioClipProperties>();
- audioClipPlayable.SetVolume(Mathf.Clamp01(volume * audioClipProperties.volume));
- audioClipPlayable.SetStereoPan(Mathf.Clamp(stereoPan, -1.0f, 1.0f));
- audioClipPlayable.SetSpatialBlend(Mathf.Clamp01(spatialBlend));
- }
- }
- }
- }
- }
- }
|