Unity Javascript 帮助停止和恢复功能
Unity Javascript help on Stop and resume function
我在 Unity JS 中有以下代码。我需要的是调用函数 Count1 时,函数 CountTime 停止并再次启动。与函数 Count2 和 Count3 类似。但是当调用函数Count4时,CountTime应该停止并且不会再次恢复。
#pragma strict
import UnityEngine.UI;
private var textfield:Text;
private var textfield0:Text;
private var textfield1:Text;
private var textfield2:Text;
private var textfield3:Text;
var timer : float = 0;
function Start () {
textfield = GameObject.Find("TimerMain").GetComponent(Text);
textfield0 = GameObject.Find("Timer").GetComponent(Text);
textfield1 = GameObject.Find("Timer1").GetComponent(Text);
textfield2 = GameObject.Find("Timer2").GetComponent(Text);
textfield3 = GameObject.Find("Timer3").GetComponent(Text);
}
function Update(){
CountTime();
}
function CountTime()
{
timer += Time.deltaTime*10;
textfield.text = timer.ToString("0000");
}
function Count1(){
textfield0.text = textfield.text;
}
function Count2(){
textfield1.text = textfield.text;
}
function Count3(){
textfield2.text = textfield.text;
}
function Count4(){
textfield3.text = textfield.text;
}
请详细说明您的程序逻辑。
如果你想在 button1-2-3 函数中设置定时器 0,你可以设置 timer = 0f;
也许您可以添加一个标记您的 Count4 按钮事件。并检查它在更新时的价值。
我假设您想重置计时器 Count1、Count2、Count3 方法。
var timer : float = 0;
var count4IsPressed = false;
function Start () {
textfield = GameObject.Find("TimerMain").GetComponent(Text);
textfield0 = GameObject.Find("Timer").GetComponent(Text);
textfield1 = GameObject.Find("Timer1").GetComponent(Text);
textfield2 = GameObject.Find("Timer2").GetComponent(Text);
textfield3 = GameObject.Find("Timer3").GetComponent(Text);
}
function Update(){
if(!count4IsPressed){
CountTime();
}
}
function CountTime()
{
timer += Time.deltaTime*10;
textfield.text = timer.ToString("0000");
}
function Count1(){
textfield0.text = textfield.text;
timer = 0;
}
function Count2(){
textfield1.text = textfield.text;
}
function Count3(){
textfield2.text = textfield.text;
timer = 0;
}
function Count4(){
count4IsPressed = true;
textfield3.text = textfield.text;
}
你能不能只做一个简单的选项,比如添加一个布尔检查来查看时间是否应该打开或关闭?然后您可以在需要时暂停它或将其设置为 false
并且永远不会重新启动。如果语法有误请见谅,我只用c#。
var timer : float = 0;
var isCounting : boolean = true;
function Update(){
if (isCounting)
{
CountTime();
}
}
function Count1(){
isCounting = false;
// Do some stuff...
textfield0.text = textfield.text;
isCounting = false;
}
// Other methods/functions...
function Count4(){
isCounting = false;
textfield3.text = textfield.text;
}
或者,如果您在这些函数上需要时间返回 0.0f
,只需在您想重新开始时间的任何地方插入语句 timer = 0.0f;
。
我在 Unity JS 中有以下代码。我需要的是调用函数 Count1 时,函数 CountTime 停止并再次启动。与函数 Count2 和 Count3 类似。但是当调用函数Count4时,CountTime应该停止并且不会再次恢复。
#pragma strict
import UnityEngine.UI;
private var textfield:Text;
private var textfield0:Text;
private var textfield1:Text;
private var textfield2:Text;
private var textfield3:Text;
var timer : float = 0;
function Start () {
textfield = GameObject.Find("TimerMain").GetComponent(Text);
textfield0 = GameObject.Find("Timer").GetComponent(Text);
textfield1 = GameObject.Find("Timer1").GetComponent(Text);
textfield2 = GameObject.Find("Timer2").GetComponent(Text);
textfield3 = GameObject.Find("Timer3").GetComponent(Text);
}
function Update(){
CountTime();
}
function CountTime()
{
timer += Time.deltaTime*10;
textfield.text = timer.ToString("0000");
}
function Count1(){
textfield0.text = textfield.text;
}
function Count2(){
textfield1.text = textfield.text;
}
function Count3(){
textfield2.text = textfield.text;
}
function Count4(){
textfield3.text = textfield.text;
}
请详细说明您的程序逻辑。
如果你想在 button1-2-3 函数中设置定时器 0,你可以设置 timer = 0f;
也许您可以添加一个标记您的 Count4 按钮事件。并检查它在更新时的价值。 我假设您想重置计时器 Count1、Count2、Count3 方法。
var timer : float = 0;
var count4IsPressed = false;
function Start () {
textfield = GameObject.Find("TimerMain").GetComponent(Text);
textfield0 = GameObject.Find("Timer").GetComponent(Text);
textfield1 = GameObject.Find("Timer1").GetComponent(Text);
textfield2 = GameObject.Find("Timer2").GetComponent(Text);
textfield3 = GameObject.Find("Timer3").GetComponent(Text);
}
function Update(){
if(!count4IsPressed){
CountTime();
}
}
function CountTime()
{
timer += Time.deltaTime*10;
textfield.text = timer.ToString("0000");
}
function Count1(){
textfield0.text = textfield.text;
timer = 0;
}
function Count2(){
textfield1.text = textfield.text;
}
function Count3(){
textfield2.text = textfield.text;
timer = 0;
}
function Count4(){
count4IsPressed = true;
textfield3.text = textfield.text;
}
你能不能只做一个简单的选项,比如添加一个布尔检查来查看时间是否应该打开或关闭?然后您可以在需要时暂停它或将其设置为 false
并且永远不会重新启动。如果语法有误请见谅,我只用c#。
var timer : float = 0;
var isCounting : boolean = true;
function Update(){
if (isCounting)
{
CountTime();
}
}
function Count1(){
isCounting = false;
// Do some stuff...
textfield0.text = textfield.text;
isCounting = false;
}
// Other methods/functions...
function Count4(){
isCounting = false;
textfield3.text = textfield.text;
}
或者,如果您在这些函数上需要时间返回 0.0f
,只需在您想重新开始时间的任何地方插入语句 timer = 0.0f;
。