【发布时间】:2020-09-11 08:19:33
【问题描述】:
我希望我的脚本检查玩家在给定 y 坐标下方的时间。但是,由于我正在检查 FixedUpdate void 中的信息,因此无法直接添加 while 循环。因此,我尝试了以下方法:
void FixedUpdate()
{
if(rb.position.y < 1f)
{
checkIfLost();
}
}
IEnumerator checkIfLost()
{
while(rb.position.y < 1f)
{
float timeGiven = 5 - Time.deltaTime;
if(timeGiven <= 0)
{
FindObjectOfType<GameManager>().EndGame();
}
yield return null;
}
}
这不起作用。 我是 Unity C# 的新手,我尝试在网上搜索它,但找不到任何东西。
运行 while 循环并检查玩家在 y 坐标下方的时间有什么更好的选择?
【问题讨论】:
-
听起来你在 Y 和屏幕底部之间有一个碰撞框,然后进行碰撞检查。
-
这不是你启动协程的方式,我建议你查看它的文档,也考虑存储你的 GameManager 而不是每次循环都找到它。您是否有理由在 FixedUpdate 中需要它?如果你只是定时更新应该没问题,特别是因为fixedupdate可以在一帧运行多次。您可以拥有所有更新; FixedUpdate、Update、LateUpdate...
标签: c# unity3d if-statement while-loop