C# 每次运行此脚本时,Unity都会崩溃
我相信这和while有关,因为如果我去掉它,效果会很好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 (
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