我有一個家庭作業,我需要制作聲音和音樂音量的東西,我希望它也可以在其他腳本中使用。我的意思是: 在此處輸入影像描述
因此,例如,當我將滑塊值拖動到 0.2 時,我希望另一個場景上的音頻源的音量為 0.2,但我不知道這是怎么做到的。謝謝。(我只有一個計劃,但沒有代碼)還有誰知道為什么在保存腳本并統一時加載需要永遠: 在此處輸入影像描述
uj5u.com熱心網友回復:
一個很好的方法是使用static
實??際為類定義的變數,并且可以在場景之間保存變數。
public class AudioManager
{
public static float MusicVolume = 1f;
public static float SoundVolume = .5f;
public void SetVolume(float value) => MusicVolume = value;
}
要呼叫它們,您只需在變數名之前寫下類的全名。
public class Player : MonoBehaviour
{
public AudioClip AudioClip;
public void Shot()
{
AudioSource.PlayClipAtPoint(AudioClip, transform.position, AudioManager.SoundVolume);
}
}
請記住,這些是類變數,將在同一類的所有實體中設定。此外,如果您希望在重新運行游戲后加載變數。我建議PlayerPrefs
用于保存它們。
uj5u.com熱心網友回復:
為此,您將撰寫一個設定為DontDestroyOnLoad的單例腳本AudioManager
它只是一個包含您的 AudioSources 的腳本,并且在您切換場景時不會被破壞。
像這樣的東西
public class AudioManager : MonoBehaviour
{
private static AudioManager instance;
[Header("AudioSources")]
[SerializeField] private AudioSource musicSource;
[SerializeField] private AudioSource soundSource;
private void Awake()
{
// If you have AudioManager in every scene, you want to only keep the main one (the first one)
if (instance != null && instance != this)
{
Destroy(gameObject);
}
else
{
instance = this;
DontDestroyOnLoad(this); // This line will tell Unity to keep this gameobject when switching scenes
}
}
}
然后您可以根據需要更改音頻源,切換場景后它們不會被破壞。
uj5u.com熱心網友回復:
好的 很高興我有很多事情要做,但是你們發給我的腳本還好,所以如果我把它放在音頻 Gameobject 上,我仍然不明白如何將引數從 1 個場景更改為其他場景(我我是初學者,我今年 13 歲,所以我可能不知道音頻 ATM 是什么,但是是的。)
簡而言之,我需要這個:
Scene1.findgameobject.name = blah blah = 選單中的 audiogameobject
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/471710.html