切换音频对象仅存在于一个场景中,但在所有场景中播放 从另一个场景开/关



我的"菜单"场景中有一个带有音频源的对象,并且附加了一个脚本,以便让它在场景之间播放而无需重置。我想使用选项场景中的按钮将音频静音/取消静音,并在可能的情况下为每次启动应用程序保存此设置以供后续步骤使用。

我通过在对象上附加脚本使音频继续播放。这是通过场景继续播放音乐的代码。

public class dontStopAudio : MonoBehaviour {
void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
if (objs.Length > 1)
Destroy(this.gameObject);
DontDestroyOnLoad(this.gameObject);
}
}

我尝试创建一个脚本来打开和关闭背景音乐并调用音乐游戏对象以获取静音组件并更改其值,但似乎不起作用。我还尝试创建一个控制函数,其中 if 和 if 比较音频源组件的 mute 属性的值,但我无法以任何方式更改它。

这就是我尝试这样做的方式,但我确信它有一些严重的错误。只是不知道是什么,因为我是 Unity 的初学者,只是想通过小项目扩展我的知识。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class toggleMusic : MonoBehaviour {
public GameObject bgMusic;
public AudioSource bgAudio;
public GameObject toggleMusicButton;
public Sprite soundON, soundOFF;

public void bgMusicOnOff()
{
bgAudio = bgMusic.GetComponent<AudioSource>();
if (bgAudio.mute = false) { 
bgAudio.mute = true;
toggleMusicButton.GetComponent<Image>().sprite = soundOFF;
}
else if (bgAudio.mute = true) { 
bgAudio.mute = false;
toggleMusicButton.GetComponent<Image>().sprite = soundOFF;
}
}
}

我还尝试在按钮的 OnClick() 面板上调用该方法,但似乎也不起作用。

我希望能够使用按钮从"选项"场景中静音/取消静音(附加到对象仅存在于"菜单"场景中,并使用我共享的脚本继续播放所有场景),在我成功完成后,我可能会继续保存每次用户启动应用程序的设置。

非常感谢您提前抽出宝贵时间,我知道有些事情我没有考虑,但由于我缺乏对 Unity 的知识/经验,我看不到什么

你应该查找 PlayerPrefs。

然后,您可以使用类似以下内容:

PlayerPrefs.SetInt("SoundOn", 1);

if(PlayerPrefs.GetInt("SoundOn"))
{
//turn sound on
}
else
{
//turn sound off
}

启动时。

希望这有帮助。

最新更新