切换一个音频对象仅存在于一个场景中,但在另一个场景中的所有场景中播放 On/Off
Toggle an audio object only exists on one scene but plays in all scenes On/Off from another scene
我的 "menu" 场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间继续播放。我想 mute/unmute 使用选项场景上的按钮播放音频,并在每次启动应用程序时保存此设置(如果可能)以用于后续步骤。
我通过在对象上附加脚本使音频继续播放。这是通过场景继续播放音乐的代码。
public class dontStopAudio : MonoBehaviour {
void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
if (objs.Length > 1)
Destroy(this.gameObject);
DontDestroyOnLoad(this.gameObject);
}
}
我试图创建一个脚本来打开和关闭背景音乐,并调用音乐游戏对象以获得静音组件并更改它的值,但似乎没有用。我还尝试使用 if 和 if else 比较音频源组件的静音值 属性 创建一个控制函数,但我无法以任何方式更改它。
这就是我尝试这样做的方式,但我确定其中存在严重错误。只是想不通是什么,因为我是 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() 面板上调用该方法,但似乎效果不佳。
我希望能够 mute/unmute 来自"options" 使用按钮的场景,在我成功完成后,我可能会在用户每次启动应用程序时继续保存设置。
非常感谢您提前抽出时间,我知道有些事情我没有考虑到,但由于我在 Unity
上缺少 knowledge/experience,所以我看不到是什么
你应该查查 PlayerPrefs。
然后你可以使用类似的东西:
PlayerPrefs.SetInt("SoundOn", 1);
和
if(PlayerPrefs.GetInt("SoundOn"))
{
//turn sound on
}
else
{
//turn sound off
}
启动时。
希望对您有所帮助。
我的 "menu" 场景中有一个带有音频源的对象,并附加了一个脚本,以便在不重置的情况下在场景之间继续播放。我想 mute/unmute 使用选项场景上的按钮播放音频,并在每次启动应用程序时保存此设置(如果可能)以用于后续步骤。
我通过在对象上附加脚本使音频继续播放。这是通过场景继续播放音乐的代码。
public class dontStopAudio : MonoBehaviour {
void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
if (objs.Length > 1)
Destroy(this.gameObject);
DontDestroyOnLoad(this.gameObject);
}
}
我试图创建一个脚本来打开和关闭背景音乐,并调用音乐游戏对象以获得静音组件并更改它的值,但似乎没有用。我还尝试使用 if 和 if else 比较音频源组件的静音值 属性 创建一个控制函数,但我无法以任何方式更改它。
这就是我尝试这样做的方式,但我确定其中存在严重错误。只是想不通是什么,因为我是 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() 面板上调用该方法,但似乎效果不佳。
我希望能够 mute/unmute 来自"options" 使用按钮的场景,在我成功完成后,我可能会在用户每次启动应用程序时继续保存设置。
非常感谢您提前抽出时间,我知道有些事情我没有考虑到,但由于我在 Unity
上缺少 knowledge/experience,所以我看不到是什么你应该查查 PlayerPrefs。
然后你可以使用类似的东西:
PlayerPrefs.SetInt("SoundOn", 1);
和
if(PlayerPrefs.GetInt("SoundOn"))
{
//turn sound on
}
else
{
//turn sound off
}
启动时。
希望对您有所帮助。