用于设置 CountDown 计时器和 Canvas 的脚本在 Unity 中无法正常播放
Script for setting CountDown timer and Canvas does not play properly in Unity
我正在构建一个第一人称 VR 射击游戏,负责倒计时和显示 Canvas 的脚本无法播放,其中出现了 Play Again 按钮。
为了更好的理解,这里是游戏画面和脚本:
`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class playGameAgainScript : MonoBehaviour {
//Use this for Timer
public Text countDown;
private float timer = 60;
//Declare Button
public Button playAgainButton;
void Start() {
//Set countDown value
countDown = GetComponent<Text>();
}
void Update() {
timer -= Time.deltaTime;
countDown.text = "" + timer.ToString ("f0");
if (timer <= 0) {
timer = 0;
playAgainButton.gameObject.SetActive (true);
}
}
public void PlayAgain() {
UnityEngine.SceneManagement.SceneManager.LoadScene ("Main Scene");
}
}
`
我对您提供的代码进行了一些编辑,希望它能正常工作
private bool counting=true,
void Update() {
if(counting){
timer -= Time.deltaTime;
countDown.text = "" + timer.ToString ("f0");
if (timer <= 0f) {
counting=false;
playAgainButton.gameObject.SetActive(true);
}
}
}
请注意,在您的代码中,当您使 timer=0 时,timer<=0 的条件始终有效;
现在它将只进入一次条件并且它应该工作。
问题是 playGameAgainButton 默认设置为非活动状态,因此编辑器没有任何可查找的东西..
通过将功能从这个脚本移动到另一个地方,它解决了问题。我将它移动到主 playerScript 并且它工作正常。
我正在构建一个第一人称 VR 射击游戏,负责倒计时和显示 Canvas 的脚本无法播放,其中出现了 Play Again 按钮。
为了更好的理解,这里是游戏画面和脚本:
`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class playGameAgainScript : MonoBehaviour {
//Use this for Timer
public Text countDown;
private float timer = 60;
//Declare Button
public Button playAgainButton;
void Start() {
//Set countDown value
countDown = GetComponent<Text>();
}
void Update() {
timer -= Time.deltaTime;
countDown.text = "" + timer.ToString ("f0");
if (timer <= 0) {
timer = 0;
playAgainButton.gameObject.SetActive (true);
}
}
public void PlayAgain() {
UnityEngine.SceneManagement.SceneManager.LoadScene ("Main Scene");
}
}
`
我对您提供的代码进行了一些编辑,希望它能正常工作
private bool counting=true,
void Update() {
if(counting){
timer -= Time.deltaTime;
countDown.text = "" + timer.ToString ("f0");
if (timer <= 0f) {
counting=false;
playAgainButton.gameObject.SetActive(true);
}
}
}
请注意,在您的代码中,当您使 timer=0 时,timer<=0 的条件始终有效; 现在它将只进入一次条件并且它应该工作。
问题是 playGameAgainButton 默认设置为非活动状态,因此编辑器没有任何可查找的东西.. 通过将功能从这个脚本移动到另一个地方,它解决了问题。我将它移动到主 playerScript 并且它工作正常。