我试图用定时器进行声音播放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");
}
}
答案 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;
}
}