Я считаю, что это имеет какое-то отношение к тому времени, потому что, если я его удалю, он отлично работает.Unity падает каждый раз, когда запускаю этот скрипт
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
}
}
Это в основном сценарий для управления кубом с использованием акселерометра android и сенсорного экрана. Он отлично работает, но когда я реализую это время, чтобы «связать» движение, оно падает, когда я его воспроизвожу.
Если петля выходит из строя, что, скорее всего, не останавливается (= бесконечный цикл). Это плохо, тем более, что он работает в функции, которую он сам в основном петли (Update). Это означает, что игра застревает в бесконечном цикле в кадре, и игра не может прогрессировать. Почему это должно быть 'while'? Не следует ли просто «если» сделать это? –
Попробуйте использовать [coroutine] (http://docs.unity3d.com/Manual/Coroutines.html) вместо – LibertyLocked
Спасибо за aswers! Я совершенно нул при программировании: D – user3848742