If statement Unity JS-简单if语句的行为是否不符合预期?

If statement Unity JS-简单if语句的行为是否不符合预期?,if-statement,unity3d,unityscript,If Statement,Unity3d,Unityscript,我有一个简单的脚本(请不要评论我没有使用switch语句或更好的代码,这是最早的版本,由同行以这种方式编写,我正在改进它),它接受一个对象并来回移动它。由于某种原因,变量time卡在249处。这可能是这种低效逻辑的一个明显缺陷,但我似乎找不到它 var speed = 1; private var time = 0; function Start() { } function Update() { if(condition == true)moveStuff(); } functi

我有一个简单的脚本(请不要评论我没有使用switch语句或更好的代码,这是最早的版本,由同行以这种方式编写,我正在改进它),它接受一个对象并来回移动它。由于某种原因,变量
time
卡在249处。这可能是这种低效逻辑的一个明显缺陷,但我似乎找不到它

var speed = 1;
private var time = 0;

function Start() {
}

function Update() {
    if(condition == true)moveStuff();
}

function moveStuff() {
    var timeSwitch = false;
    if(time == 0)timeSwitch = false;
    if(time == timeSet)timeSwitch = true;

        if(direction == 1) {
            if(timeSwitch == false) {
                    transform.Translate(Vector3.up * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log(time);
                }else if(timeSwitch == true) {
                    transform.Translate(Vector3.up * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                    Debug.Log(time);
                }   
            } else if(direction == 2) {
            if(timeSwitch == false) {
                    transform.Translate(Vector3.down * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log("Moved down. ");
                }else if(timeSwitch == true){
                    transform.Translate(Vector3.down * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                }
            } else if(direction == 3) {
                if(timeSwitch == false) {
                    transform.Translate(Vector3.forward * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log("Moved forward. ");
                }else if(timeSwitch == true){
                    transform.Translate(Vector3.forward * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                }
            } else if(direction == 4) {
                if(timeSwitch == false) {
                    transform.Translate(Vector3.back * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log("Moved back. ");
                }else if(timeSwitch == true){
                    transform.Translate(Vector3.back * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                }
            } else if(direction == 5) {
                if(timeSwitch == false) {
                    transform.Translate(Vector3.right * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log("Moved right. ");
                }else if(timeSwitch == true){
                    transform.Translate(Vector3.right * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                }
            } else if(direction == 6) {
                if(timeSwitch == false) {
                    transform.Translate(Vector3.left * (Time.deltaTime * speed));
                    time += 1;
                    Debug.Log("Moved left. ");
                }else if(timeSwitch == true){
                    transform.Translate(Vector3.left * ((Time.deltaTime * speed) * -1));
                    time -= 1;
                }
            }
}

每次在
moveStuff()
的开头,我都将变量
timeSet
声明为false。我把它作为一个私有变量转移到我声明其他东西的地方,它工作得很好。

那里的代码与您的问题没有任何关系。看看为什么bool条件可能会被卡住,并停止调用moveStuff()。一旦该条件为true(由另一个脚本设置),它将永远不会更改。您必须修复缩进。现在不可能读取代码,错误可能隐藏在缩进中。特别是,moveStuff的第5行和第16行缩进不正确,我不知道这是错误的,还是因为你认为它是这样执行的。是的,我知道。我从我在项目中编写的另一个脚本中复制了这一部分,因为我很懒,而且我电脑上的复制粘贴有点古怪。特别是在Unity脚本编辑器中,出于某种原因。我肯定知道它不是那样执行的。这可能来自我在学校里做的所有Ruby-
else
elsif
语句都缩进Ruby中的块中。这是不可能的。没有其他脚本影响此对象。