gpt4 book ai didi

unity3d - 切换音频对象仅存在于一个场景中,但可以在所有场景中播放,并在另一场景中打开/关闭

转载 作者:行者123 更新时间:2023-12-03 00:26:57 24 4
gpt4 key购买 nike

我的“菜单”场景中有一个带有“音频源”的对象,并附加了一个脚本,以使它在场景之间播放而无需重置。我想使用选项场景上的按钮将音频静音/取消静音,并在每次启动应用程序时保存此设置,以备下一步使用。

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

public class dontStopAudio : MonoBehaviour {

void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("BGAudio");
if (objs.Length > 1)
Destroy(this.gameObject);

DontDestroyOnLoad(this.gameObject);
}

}

我试图创建一个脚本来打开和关闭背景音乐并调用音乐游戏对象,以获取静音组件并更改其值,但是似乎没有用。我还尝试通过if和if else比较音频源组件的Mutate属性的值来创建控制函数,但是我无法以任何方式对其进行更改。

这是我尝试执行的操作,但是我确定它存在严重错误。只是不知道是什么,因为我是一个团结的初学者,只是想通过小项目来扩展我的知识。
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
}

在启动时。

希望这可以帮助。

关于unity3d - 切换音频对象仅存在于一个场景中,但可以在所有场景中播放,并在另一场景中打开/关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57137845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com