为什么等待 Task.Delay(10);停止统一 Web-GL 中的执行?
Why do await Task.Delay(10); stops execution in unity Web-GL?
我在 unity C# 中使用 await Task.Delay(10);
进行延迟。在构建和 Web-GL 格式的 运行 之后。执行在具有延迟的这一行停止。当我删除延迟时,它会执行.
while (XAxiscurrentXpos <= -izvalue)
{
await Task.Delay(10);
XAxiscurrentXpos += 0.001f;
Vector3 posx = new Vector3(XAxiscurrentXpos, XAxisposition.y, XAxisposition.z);
XAxis.transform.localPosition = posx;
}
所以现在知道你实际上想做什么而不是你的任务你宁愿使用例如
public class MoveObject : MonoBehaviour
{
public Transform XAxis;
public float desiredUnitsPerSecond;
// This is called once a frame by Unity
private void Update()
{
if(XAxis.localPosition.x <= -izvalue)
{
XAxis.localPosition += Vector3.right * desiredUnitsPerSecond * Time.deltaTime;
}
}
}
这会以 desiredUnitsPerSecond
的线速度在其局部右侧移动您的对象,只要它位于 -izvalue
的左侧。
我有使用 UniTask 的解决方案。 UniTask Link 在这里
我在 unity C# 中使用 await Task.Delay(10);
进行延迟。在构建和 Web-GL 格式的 运行 之后。执行在具有延迟的这一行停止。当我删除延迟时,它会执行.
while (XAxiscurrentXpos <= -izvalue)
{
await Task.Delay(10);
XAxiscurrentXpos += 0.001f;
Vector3 posx = new Vector3(XAxiscurrentXpos, XAxisposition.y, XAxisposition.z);
XAxis.transform.localPosition = posx;
}
所以现在知道你实际上想做什么而不是你的任务你宁愿使用例如
public class MoveObject : MonoBehaviour
{
public Transform XAxis;
public float desiredUnitsPerSecond;
// This is called once a frame by Unity
private void Update()
{
if(XAxis.localPosition.x <= -izvalue)
{
XAxis.localPosition += Vector3.right * desiredUnitsPerSecond * Time.deltaTime;
}
}
}
这会以 desiredUnitsPerSecond
的线速度在其局部右侧移动您的对象,只要它位于 -izvalue
的左侧。
我有使用 UniTask 的解决方案。 UniTask Link 在这里