声音未在项目构建中播放

时间:2018-11-15 09:06:19

标签: c# unity3d audio

我创建了一些链接到画布的代码,该代码本身管理两个按钮,这些按钮在单击时彼此切换,从而允许播放器打开和关闭音乐。当我进行构建时,声音总是关闭并且无法找出原因(按钮功能正常)。为了说明我使用Playerprefs保存设置,我所有的场景都使用了相同的代码。我只想强制启动音频并将我的按钮设置为在第一个场景中处于活动状态。(开始场景)

  public AudioSource backgroundmusic;
public string sound;

public GameObject SoundOnButton, SoundOffButton;
public bool muted;



void Start ()
{

    backgroundmusic.Play();
    SoundCheck();

   if (sound == "enabled")
    {
        SoundOffButton.SetActive(false);
        SoundOnButton.SetActive(true);
    }

   if (sound == "muted")
    {

        SoundOffButton.SetActive(true);
        SoundOnButton.SetActive(false);
    }

}

private void Update()
{

}


public void SoundOFF()
{
    SoundOffButton.SetActive(false);
    SoundOnButton.SetActive(true);
    muted = false;

    PlayerPrefs.SetString("Sound", "enabled");

    SoundCheck();

}

public void SoundON()
{

    SoundOffButton.SetActive(true);
    SoundOnButton.SetActive(false);
    muted = true;

    PlayerPrefs.SetString("Button", "used");
    PlayerPrefs.SetString("Sound", "muted");

    SoundCheck();


}

public void SoundCheck()
{
    sound = PlayerPrefs.GetString("Sound");

    if (sound == "enabled")
    {

        muted = false;
        backgroundmusic.Stop();
    }
    if (sound == "muted")
    {

        muted = true;
        backgroundmusic.Play();

    }

}

2 个答案:

答案 0 :(得分:0)

我的第一个问题是:它对您的编辑器有效吗?我不清楚。

我想指出一些事情: 确保已将AudioClip连接到音频源。确保音量是您可以实际听到的值。确保在任何时候都不会禁用GameObject或包含AudioSource的GameObject的父代。确保实际上允许您的项目发出声音(Windows或Mac音频混合器)。

如果这些都不起作用,则不会。我将开始调试。

首先,禁用用于启动和暂停音乐的脚本,然后转到AudioSource并选择“ Awake on Awake”,这将使背景音乐从游戏开始,如果不是,则现在您将有不同的问题。

如果确实可以玩游戏,请编写一个简单的脚本。

IEnumerator Start ()
{
    bool control;
    while (true)
    {
        control = !control;
        yield return new WaitForSeconds (1f);
        if (control)
            backgroundmusic.Play ();
        else
            backgroundmusic.Stop ();
    }
}

除了播放()和停止()外,您还可以使用:

GetComponent <AudioSource> ().volume = 0; and GetComponent <AudioSource> ().volume = 1;

尝试任何一种解决方案,并让我知道。

答案 1 :(得分:0)

我找到了想要的答案,我在这里和那里更改了一些内容,现在可以使用了。这是代码。

   public AudioSource backgroundmusic;
public string sound;

public GameObject SoundOnButton, SoundOffButton, Canvas;
public bool muted, notloaded = false;



void Start()
{


    SoundCheck();

    if (notloaded == false)
    {
        if (Canvas == true)
        {
            SoundON();
            notloaded = true;
        }
    }

}



public void SoundOFF()
{

    muted = false;

    PlayerPrefs.SetString("Sound", "enabled");

    SoundCheck();

}

public void SoundON()
{


    muted = true;

    PlayerPrefs.SetString("Sound", "muted");

    SoundCheck();


}

public void SoundCheck()
{
    sound = PlayerPrefs.GetString("Sound");

    if (sound == "enabled")
    {

        muted = false;
        SoundOffButton.SetActive(false);
        SoundOnButton.SetActive(true);
        backgroundmusic.Pause();
        Debug.Log("Enabled");
    }
    if (sound == "muted")
    {

        muted = true;
        SoundOffButton.SetActive(true);
        SoundOnButton.SetActive(false);
        backgroundmusic.Play();
        Debug.Log("Muted");

    }
}

}