我正在 Unity 中撰寫游戲,并希望制作一個按鈕,使每個聲音的音量從全音量變為 2/3 音量,再到 1/3 音量變為靜音,然后再回到全音量。我知道我可以單獨調整每個音頻源,但有沒有辦法一次降低所有音量?
我正在使用 Unity 2020.3.24f1 并使用 C# 進行編碼。這是一個2D游戲。
uj5u.com熱心網友回復:
有很多方法可以做到這一點,具體取決于最適合您的需求。
- Retired Ninja 建議使用
AudioListener音量調整,這是一個很好的集中解決方案。 - 使用靜態事件來廣播您的按鈕點擊。如果您需要,這允許您從更改中排除某些音頻源。缺點是您必須確保添加的任何新音頻源都訂閱了該事件。
- 使用 a
ScriptableObject在所有音頻源之間共享設定。您可以使用靜態欄位,也可以為每個音頻源提供對設定檔案的參考。這是在許多不同物件之間共享資料的流行工具。 - 將您的音頻源添加到混音器并調整主音量。
例子
靜態事件
在您有按鈕回呼的類中:
public class ButtonHandler
{
public delegate void VolumeEvent(float volume);
public static event VolumeEvent OnChangeVolume;
private int _step = 3;
private float _volIncrement = 0.333f;
public void OnClick()
{
_step = _step == 0 ? 3 : --step;
OnChangeVolume?.Invoke(_step * _volIncrement);
}
}
在您控制每個的類中AudioSource:
public class AudioManager : MonoBehaviour
{
private AudioSource _source;
// subscribe
private void Awake() =>
ButtonHandler.OnChangeVolume = UpdateVolume;
// always remember to unsubscribe
private void OnDestroy() =>
ButtonHandler.OnChangeVolume -= UpdateVolume;
private void UpdateVolume(float vol) =>
_source.volume = vol;
}
可撰寫腳本的物件
游戲中的任何物件都可以參考以下腳本的實體。這些物件將能夠讀取和寫入公共欄位,并且參考該物件的所有其他物件ScriptableObject都將能夠讀取這些更改。
public class AudioSettings : ScriptableObject
{
public float volume;
#if UNITY_EDITOR
[UnityEditor.MenuItem("Assets/Create/Audio Settings")]
public static void Create()
{
var path = UnityEditor.EditorUtility.SaveFilePanelInProject(
"Save Audio Settings", "Audio Settings", "asset", "Save Audio Settings",
"Assets/");
if(path == "") return;
UnityEditor.AssetDatabase.CreateAsset(CreateInstance<AudioSettings>(), path);
}
#endif
}
public class AudioManager : MonoBehaviour
{
private AudioSource _source;
[SerializeField] private AudioSettings _settings;
private void Update() =>
_source.volume = _settings.volume;
}
public class ButtonHandler
{
[SerializeField] private AudioSettings _settings;
private int _step = 3;
private float _volIncrement = 0.333f;
public void OnClick()
{
_step = _step == 0 ? 3 : --step;
_settings.volume = _step * _volIncrement;
}
}
This will allow you to create a settings file by clicking Assets > Create > Audio Settings. Find it in your Assets folder and drag the file into the field for anything that needs a reference to it. Alternatively, make the volume field static and access it by AudioSettings.volume.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436236.html
上一篇:粒子生成在錯誤的位置
下一篇:計算距離列均值的新資料框變數
