Unity3d 切换音频对象仅存在于一个场景中,但在所有场景中从另一个场景打开/关闭播放
我的“菜单”场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间播放。我想使用“选项”场景中的按钮静音/取消静音音频,并在可能的情况下为每次启动应用程序保存此设置,以供后续步骤使用 我通过在对象上附加脚本使音频保持播放。下面是通过场景持续播放音乐的代码Unity3d 切换音频对象仅存在于一个场景中,但在所有场景中从另一个场景打开/关闭播放,unity3d,audio,background,toggle,Unity3d,Audio,Background,Toggle,我的“菜单”场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间播放。我想使用“选项”场景中的按钮静音/取消静音音频,并在可能的情况下为每次启动应用程序保存此设置,以供后续步骤使用 我通过在对象上附加脚本使音频保持播放。下面是通过场景持续播放音乐的代码 public class dontStopAudio : MonoBehaviour { void Awake() { GameObject[] objs = GameObject.Fi
public class dontStopAudio : MonoBehaviour {
void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
if (objs.Length > 1)
Destroy(this.gameObject);
DontDestroyOnLoad(this.gameObject);
}
}
我试图创建一个脚本来打开和关闭背景音乐,并调用音乐游戏对象,以获得静音组件并更改其值,但似乎没有起作用。我还尝试创建一个控制函数,使用if和if-else比较音频源组件的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;
}
}
}
使用系统;
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共课堂切换音乐:单一行为{
公共游戏对象音乐;
公共音频源;
公共游戏对象切换音乐按钮;
公共精灵声开声关;
公共空间bgMusicOnOff()
{
bgAudio=bgMusic.GetComponent();
如果(bgAudio.mute=false){
bgAudio.mute=true;
toggleMusicButton.GetComponent().sprite=soundOFF;
}
如果(bgAudio.mute=true){
bgAudio.mute=false;
toggleMusicButton.GetComponent().sprite=soundOFF;
}
}
}
我还尝试在button的OnClick()面板上调用该方法,但似乎效果不佳
我希望能够使用按钮从“选项”场景中静音/取消静音音频(连接到对象的音频仅存在于“菜单”场景中,并使用我共享的脚本在所有场景中播放),在我成功完成后,我可能会继续保存用户每次启动应用程序时的设置
非常感谢你提前的时间,我知道有些事情我没有考虑,但是我没有看到什么因为我缺乏关于团结的知识/经验。
然后,您可以使用以下内容:
PlayerPrefs.SetInt("SoundOn", 1);
及
启动时
希望这能有所帮助。为了帮助其他可能有同样问题的人,这绝对是解决方案。特别是,如果在另一个场景中进行了选择,则要让游戏记住玩家的选择(例如:在菜单场景中启动游戏,然后将其从选项场景中静音)你只需将你的音乐对象变成一个预置,并将其加载到选项屏幕上,同时将你为“选项屏幕上静音”设置的脚本作为游戏对象移动到菜单屏幕上。
if(PlayerPrefs.GetInt("SoundOn"))
{
//turn sound on
}
else
{
//turn sound off
}