|
|
(20 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
− | [[Category: Sound]]
| + | {{Delete}} |
− | Author: ''Jessy''
| + | |
− | | + | |
− | ==Description==
| + | |
− | | + | |
− | This is a script that replaces the '''Volume''' property of the Audio Listener. It behaves more intuitively than that of the Audio Listener itself. See the page for my [[Audio|Audio script]] for extensive details. :-D
| + | |
− | | + | |
− | ==Instructions==
| + | |
− | | + | |
− | The '''Volume''' property performs the task that the similarly-named parameter of an Audio Listener was intended to perform. Change its value in the Editor for immediate results, or use the methods described in the JavaScript or C# sections.
| + | |
− | | + | |
− | | + | |
− | ==JavaScript Instructions==
| + | |
− | Use the following variable declaration in an external script, and drag the Game Object containing the Audio Listener component onto the '''Listener''' variable slot in the inspector:
| + | |
− | | + | |
− | <javascript>var listener : Listener;</javascript>
| + | |
− | | + | |
− | | + | |
− | Use ''listener.Volume(newVolume);'' to assign the '''volume''' parameter a value of ''newVolume'', instead of assigning a value to '''volume''' directly. (You may find the way this is handled via C# to be more intuitive.)
| + | |
− | | + | |
− | ==JavaScript - Listener.js==
| + | |
− | <javascript>@script RequireComponent(AudioListener)
| + | |
− | | + | |
− | var volume : float = 1;
| + | |
− | | + | |
− | private var loudnessExponent = Mathf.Log(Mathf.Sqrt(10), 2);
| + | |
− | | + | |
− | function Volume (newVolume)
| + | |
− | { | + | |
− | volume = newVolume;
| + | |
− | var listenerLoudness = Mathf.Pow(volume, loudnessExponent);
| + | |
− |
| + | |
− | // volume values outside 0-1 mean nothing in Unity
| + | |
− | listenerLoudness = Mathf.Clamp(listenerLoudness, 0, 1);
| + | |
− |
| + | |
− | AudioListener.volume = listenerLoudness;
| + | |
− | }
| + | |
− | | + | |
− | function Start()
| + | |
− | {Volume(volume);}
| + | |
− | | + | |
− | // Change values in the Editor; get results.
| + | |
− | function OnDrawGizmos ()
| + | |
− | {Volume(volume);}</javascript>
| + | |
− | | + | |
− | | + | |
− | == C# Instructions==
| + | |
− | Use the following variable declaration in an external script, and drag the Game Object containing the Audio Listener component onto the '''Listener''' variable slot in the inspector:
| + | |
− | | + | |
− | <csharp>public Listener listener;</csharp>
| + | |
− | | + | |
− | | + | |
− | Use ''listener.Volume = newVolume;'' to assign the '''volume''' parameter a value of ''newVolume'', instead of assigning a value to '''volume''' directly.
| + | |
− | | + | |
− | == C# - Listener.cs==
| + | |
− | <csharp>using UnityEngine;
| + | |
− | using System.Collections;
| + | |
− | [RequireComponent (typeof(AudioListener))]
| + | |
− | | + | |
− | public class Listener : MonoBehaviour
| + | |
− | {
| + | |
− | public float volume = 1;
| + | |
− |
| + | |
− | float loudnessExponent = Mathf.Log(Mathf.Sqrt(10), 2);
| + | |
− |
| + | |
− | public float Volume
| + | |
− | {
| + | |
− | // no need for a getter; use AudioListener.volume instead
| + | |
− |
| + | |
− | set
| + | |
− | {
| + | |
− | // volume values outside 0-1 mean nothing in Unity
| + | |
− | volume = Mathf.Clamp01(value);
| + | |
− | AudioListener.volume = Mathf.Pow(volume, loudnessExponent);
| + | |
− | }
| + | |
− | }
| + | |
− |
| + | |
− | void Start()
| + | |
− | {Volume = volume;}
| + | |
− |
| + | |
− | // Change values in the Editor; get results.
| + | |
− | void OnDrawGizmos ()
| + | |
− | {Volume = volume;}
| + | |
− | }</csharp > | + | |