声音不会在统一的特定时间播放

时间:2016-02-06 08:49:10

标签: audio unity3d

我试图用定时器进行声音播放3,2,1。

我的计时器从十点开始,延迟时间为三秒。如果我使用以下代码:

    if (tl.myCoolTimer == 10)
    {
        print("Play Sound");
        myAudioSource.Play();
    }

它一遍又一遍地发出哔哔声直到比赛开始并且计数器低于10。

如果我使用代码:

    if (tl.myCoolTimer == 3)
    {
        print("Play Sound");
        myAudioSource.Play();
    }

根本不播放声音。它甚至不打印print语句。

我确实只改变了号码。我不确定为什么这不起作用。

我也尝试将其设置为3f以查看它是否是浮动问题。

计时器脚本

这是启动计时器。它倒数到3(然后比赛开始)

public Text startGameTimerText;

public float startGameTimer = 3;

public void Start ()
{
    startGameTimerText = GetComponent<Text> ();
}


public void Update ()
{

    startGameTimer -= Time.deltaTime;
    startGameTimerText.text = startGameTimer.ToString ("f1");

    if (startGameTimer < 0) {
        GameObject.Find ("GameStartTimer").SetActive (false);
    }

}

这是游戏计时器它从10开始并倒计时到0。

public StartGameTimer gt;  //this is the script the other timer is on

public Text timerText;

public float myCoolTimer = 10;

public void Start ()
{
    timerText = GetComponent<Text> ();
}

public void Update ()
{
    if (gt.startGameTimer > 0) {
        myCoolTimer = 10;
    } else {
        myCoolTimer -= Time.deltaTime;
        timerText.text = myCoolTimer.ToString ("f1");
    }
}

1 个答案:

答案 0 :(得分:0)

感谢Joe的帮助。这是我的最终答案。我知道它被黑了,但我还没有想出Invoke的东西。当我进入它时,它一直在播放它在#34; 3&#34;,所以我需要让它只播放一次。

private AudioSource myAudioSource;
public bool isSoundPlayed;

void Start()
{
    myAudioSource = GetComponent<AudioSource>();
    isSoundPlayed = false;
}

void Update()
{
    if((int)tl.myCoolTimer == 3)
    {
        if (isSoundPlayed == false)
        {
            myAudioSource.Play();
            isSoundPlayed = true;
        }
        return;
    }
    if ((int)tl.myCoolTimer == 2)
    {
        if (isSoundPlayed == true)
        {
            myAudioSource.Play();
            isSoundPlayed = false;
        }
        return;
    }
    if ((int)tl.myCoolTimer == 1)
    {
        if (isSoundPlayed == false)
        {
            myAudioSource.Play();
            isSoundPlayed = true;
        }
        return;
    }
}