【问题标题】:How to use save Mute/Unmute Button?如何使用保存静音/取消静音按钮?
【发布时间】:2016-12-12 02:15:28
【问题描述】:

您好,我一直在研究这个问题,但找不到解决问题的最佳方法。

所以问题是我的背景音乐开始播放。我有两个按钮。“开”和“关”。我想使音乐静音,所以当我单击静音按钮时,它从“开”变为“关”,音乐停止。但是当我改变场景并返回时,它返回到带有文本“开”的按钮,但是音乐仍然停止。 所以我的问题只是如何保存更改的按钮而不默认返回? 这是我的脚本:

public GameObject on;
public GameObject off;
public string sound;

Soundtrack music;
static bool isMuted;


void Awake()
{
    SoundCheck();


}
void Start()
{
    music = FindObjectOfType<Soundtrack>();
}
public void Off()
{
    if (isMuted == false)
     {
    on.gameObject.SetActive(false);
    off.gameObject.SetActive(true);
    music.s.Stop();
    isMuted = true;
    PlayerPrefs.SetString("Sound", "muted");
     }
}
public void On()
{    if(isMuted==true)
   {
    on.gameObject.SetActive(true);
    off.gameObject.SetActive(false);
    music.s.Play();
    isMuted = false;
    PlayerPrefs.SetString("Sound", "enabled");
   }
}
public void SoundCheck()
{
    sound = PlayerPrefs.GetString("Sound");

    if (sound == "enabled")
    {
        isMuted = false;
    }
    else if (sound == "muted")
    {
        isMuted = true;
    }
}

}

【问题讨论】:

  • 可能与手头的问题无关,但看起来你的 if 语句有一个大问题:你想在 if 语句中执行的多行代码应该用大括号括起来- 否则,只会有条件地执行 if 语句之后的第一行。例如,在Off() 中,将有条件执行的唯一行将是on.gameObject.SetActive(false);。其余的行将在每次调用该方法时执行,无论如何。我建议您养成在编写的每个 if 语句中都使用花括号的习惯。
  • 哦,是的,我知道。当我将花括号放在函数中的整个代码上时,它也不起作用。现在我一定是在写这篇文章时无意中删除了它们。但是感谢您的关注:)。现在我将为未来的读者纠正它。
  • 看起来像复制品。请看here

标签: android ios unity3d


【解决方案1】:

这很容易。首先,在您的 PlayerPrefs 中保存bool 类型而不是string 会更好。 但是要解决您的问题,您所要做的就是添加

public void SoundCheck() { sound = PlayerPrefs.GetString("Sound"); if (sound == "enabled") { isMuted = false; } else if (sound == "muted") { isMuted = true; } on.gameObject.SetActive(isMuted); off.gameObject.SetActive(!isMuted); }

【讨论】:

  • “on”和“off”函数呢?
  • 我应该从他们那里改变什么吗?
  • 如果您将 PlayerPrefs 类型从“字符串”更改为“布尔”,那么您将不得不修改它,而不是修改它。
  • 然后帮我写代码。如何让它们变成布尔值?
  • 使用 PlayerPrefs.SetBool 代替 SetString 并作为值传递 isMuted 变量。抱歉,在手机上输入代码很困难。
【解决方案2】:

您需要在 Start 函数中更改 SoundCheck() 调用而不是 Awake! 当您返回场景时,Start() 会调用,但不会唤醒。

顺便说一句:

  1. 应该 bool 保存 PlayerPrefs,
  2. 想一个按钮,将 sprite 更改为 Sprite On 和 Sprite Off 会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多