Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次运行此脚本时,Unity都会崩溃_C#_Android_Unity3d - Fatal编程技术网

C# 每次运行此脚本时,Unity都会崩溃

C# 每次运行此脚本时,Unity都会崩溃,c#,android,unity3d,C#,Android,Unity3d,我相信这和while有关,因为如果我去掉它,效果会很好 using UnityEngine; using System.Collections; public class Movement : MonoBehaviour { public float speed = 1f; public float pos = 0f; void Start () { } void Update () { float temp = Input.acceleration.x; while (

我相信这和while有关,因为如果我去掉它,效果会很好

using UnityEngine;
using System.Collections;

public class Movement : MonoBehaviour {
public float speed = 1f;
public float pos = 0f;
void Start () {

}

void Update () {

    float temp = Input.acceleration.x;
    while (pos >= -200f && pos <= 200f){

        if (Input.touchCount > 0) {
            if ((Input.GetTouch (0).position.x >= 250)) { //Right
                transform.Rotate (0, 0, 0);
                pos += speed * 500 * Time.deltaTime;
                transform.Translate (speed * 500 * Time.deltaTime, 0, 0,   Space.World);
            } else if ((Input.GetTouch (0).position.x < 250)) { //Left
                transform.Rotate (0, 0, 0);
                pos -= speed * 500 * Time.deltaTime;
                transform.Translate (-speed * 500 * Time.deltaTime, 0, 0, Space.World);
                //Time.timeScale = 0.2F;

            }
        }
    }
    //Time.timeScale = 1F;
    transform.Rotate (0, 0, -temp * 500 * Time.deltaTime); //Rotation

    }
}
使用UnityEngine;
使用系统集合;
公共阶级运动:单一行为{
公共浮子速度=1f;
公共浮动位置=0f;
无效开始(){
}
无效更新(){
浮动温度=输入加速度x;
而(位置>=-200f和位置0){
如果((Input.GetTouch(0.position.x>=250)){//Right
变换。旋转(0,0,0);
pos+=速度*500*时间增量;
transform.Translate(速度*500*Time.deltaTime,0,0,Space.World);
}else如果((Input.GetTouch(0.position.x<250)){//Left
变换。旋转(0,0,0);
pos-=速度*500*时间增量;
transform.Translate(-speed*500*Time.deltaTime,0,0,Space.World);
//Time.timeScale=0.2F;
}
}
}
//Time.timeScale=1F;
transform.Rotate(0,0,-temp*500*Time.deltaTime);//旋转
}
}

它基本上是一个使用android加速计和触摸屏控制立方体的脚本。它工作得很好,但是当我执行while“绑定”移动时,每当我玩它时,它就会崩溃。

你不应该在
Update
中使用
while
循环,因为
Update
是你的游戏循环。这基本上阻止了游戏的更新,因为它被困在你的循环中,永远无法渲染下一帧。尝试使用
if
语句代替
while
来产生您想要的效果。

您不应该在
Update
中使用
while
循环,因为
Update
是您的游戏循环。这基本上阻止了游戏的更新,因为它被困在你的循环中,永远无法渲染下一帧。尝试使用
if
语句代替
while
,以产生您想要的效果。

只需重新表述一下:

只要游戏正在运行,更新就会运行,并且只在活动的游戏对象上运行。 因此,不应在更新函数中使用While循环

使用:

if (pos >= -200f && pos <= 200f){

}
if(pos>=-200f&&pos只是换句话:

只要游戏正在运行,更新就会运行,并且只在活动的游戏对象上运行。 因此,不应在更新函数中使用While循环

使用:

if (pos >= -200f && pos <= 200f){

}

if(pos>=-200f&&pos如果循环崩溃,它很可能不会停止(=无限循环)。这是不好的,因为它在一个函数中运行,而该函数本身就是循环(更新)。这意味着游戏在一个帧中陷入无限循环,游戏无法进行。为什么这需要是一个
,而
?如果
这样做,简单的
不应该吗?尝试使用替代方法谢谢aswers!我不擅长编程:如果循环崩溃,它很可能不会停止(=无限循环)。这是不好的,因为它运行在一个函数中,它基本上会自行循环(更新)。这意味着游戏在一个帧中陷入无限循环,游戏无法进行。为什么这需要是一个
,而
?如果
这样做,不应该是一个简单的
吗?试着用一个替代品谢谢你的提问!我不擅长编程:D