我有一个名为Timer.cs的脚本。此脚本连接到某些GUI文本,该文本显示游戏中剩余的时间量。
此脚本附带一个音频源,选择了我想要的声音。当时钟到零时,文本变为“GAME OVER!”并且角色控制锁定;但是,声音没有播放。
我场景中audio.Play()的所有其他实例都正常工作,当我将音频源设置为“Play On Awake”时,它播放没有问题。可能是什么问题?
Using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour {
public float timer = 300; // set duration time in seconds in the Inspector
public static int sound = 1;
public static int go = 1;
bool isFinishedLevel = false; // while this is false, timer counts down
void Start(){
PlayerController.speed = 8;
PlayerController.jumpHeight = 12;
}
void Update (){
if (!isFinishedLevel) // has the level been completed
{
timer -= Time.deltaTime; // I need timer which from a particular time goes to zero
}
if (timer > 0)
{
guiText.text = timer.ToString();
}
else
{
guiText.text = "GAME OVER!"; // when it goes to the end-0,game ends (shows time text over...)
audio.Play();
int getspeed = PlayerController.speed;
PlayerController.speed = 0;
int getjumpHeight = PlayerController.jumpHeight;
PlayerController.jumpHeight = 0;
}
if (Input.GetKeyDown("r")) // And then i can restart game: pressing restart.
{
Application.LoadLevel(Application.loadedLevel); // reload the same level
}
}
}
答案 0 :(得分:5)
鉴于您将其作为Update例程的一部分进行调用,我不得不猜测问题是您反复调用它。即只要timer <= 0
,你就会在每一帧调用它。
您不应多次拨打Play()
。或者至少在它正在播放时不会再次出现。一个简单的解决方案就是
if(!audio.isPlaying)
{
audio.Play();
}
看看是否能解决您的问题,然后您就可以从中解决问题。
答案 1 :(得分:0)
我使用audio.Play();并使用它跟我修复了错误
GetComponent<AudioSource>().Play();