我正在尝试为TBS游戏创建旋转光源,该光源将在回合结束时旋转。为此,我使用了事件。我有两个脚本,其中一个推进了转弯:
public delegate void Time(int t);
public static event Time Time_Change;
public int t = 1;
void Update()
{
if (Input.GetKeyDown(KeyCode.Return))
{
t = t + 1;
if (t > 8) { t = 1; }
Debug.Log(t);
if (Time_Change != null)
{
Time_Change(t);
}
}
(有八个昼/夜相位),一个接收信号并将其移动的光连接到:
public int angle = 85;
void Start () {
Time_Controller.Time_Change += Move_Lights;
}
void Move_Lights(int t)
{
//phase detection, set angle variable
if (t % 2 == 0)
{
//----------------------------------------
while (transform.eulerAngles.x != angle)
{
transform.Rotate(Vector3.right * Time.deltaTime, Space.World);
}
//----------------------------------------
}
}
问题是,当我运行游戏并按Enter键时,所有内容都会冻结,并且关闭Unity的唯一方法是通过任务管理器(这也显示了冻结游戏时Unity的CPU使用率激增)。通过消除过程,我(如果没有它,一切都很好)将故障线路跟踪到
while (transform.eulerAngles.x != angle)
{
transform.Rotate(Vector3.right * Time.deltaTime, Space.World);
}
如上所述。我该怎么办?我已经尝试了各种旋转光源的方法,但是还没有任何方法可以防止崩溃。
提前致谢。
参考方案
您的游戏死机是因为它与您的不平等陷入无限循环。仅当您的转换的浮点值等于您的angle
时,while循环才会退出,由于浮点的精度,它几乎永远不会为真。当对浮点数使用等于时,您应该在比较中设置公差。如果您正在寻找一个精确的角度,那么这当然不是您要使用的方法。
// while the transforms angle is not within .5f of the desired...
while (Mathf.abs(transform.eulerAngles.x-angle) > .5f)
{
transform.Rotate(Vector3.right * Time.deltaTime, Space.World);
yield return null;
}
PHP set_time_limit无效 - php我有一个非常痛苦的慢脚本,该脚本从MySQL获取大量数据并从中创建大量报告,并最终以应用程序/强制下载的形式提供给用户。长话短说,在生产服务器上,它会在大约30秒后终止(相当稳定),然后吐出一个空文件。在开发服务器上,它可以正常工作,但是执行时间却要长得多-大约90秒。为了安全起见,我将php.ini文件设置为max_execution_time = 200…
Java日期时间为ISO_DATE_TIME - java我想在Java中DateTimeFormatter ISO_DATE_TIME的末尾添加一个Z,而不是硬编码String sample = "2018-05-11T13:35:11Z"; DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd'T…
TypeError:_transform()接受2个位置参数,但给出了3个 - python我了解了CaesarCipher:In [90]: !cat caesar_cipher.py class CaesarCipher: """Construct Caesar cipher using given integer shift for rotation.""" def __init__…
Spring Boot:java.time.Duration的默认序列化从字符串更改为数字 - java我们最近从Spring Boot 2.1.9升级到2.2.1,这导致我们的测试失败。调查导致结果,默认情况下java.time.Duration类型现在序列化为不同的序列。现在,我们将得到"PT15M",而不是在JSON消息中包含字符串"900.0"。 POJO定义如下所示@JsonProperty(required …
LeetCode题解计算机为什么是基于二进制的?可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制