【发布时间】:2021-07-08 17:31:48
【问题描述】:
我在下面有一个 C# 方法(用于 Unity):
int CheckLength()
{
Collider[] enemies = Physics.OverlapSphere(transform.position, transform.localScale.x);
return enemies.Length;
}
我想延迟使用这个方法,所以我必须使用 Invoke() 方法。但问题是我无法获取方法的返回值,因为 Invoke() 方法的返回类型是 void。如何延迟使用此方法并获取返回值?
【问题讨论】:
-
How to delay code in Unity的方式有很多种..你最好的选择可能是How to return a value from a Coroutine?
-
您的问题不清楚。如果您使用Invoke(),那么在代码实际执行之前不会有返回值,在最初调用
Invoke()的方法返回很久之后。如果你想要返回值,不要使用Invoke()。你为什么首先在这里使用Invoke()?推迟这个电话有什么好处?请改进问题,使其有意义。 -
@PeterDuniho 我的目标是延迟这个功能并获得它的价值。但正如您所说, Invoke() 不会返回值。我应该在 Update() 方法中使用这个函数。在我看来,在 Update() 方法中使用协程是不合适的。
-
@ThyRety 为什么?
Update和FixedUpdate一直都在使用协程。如果您出于某种原因不想走这条路,async/await是另一种选择。 -
您能给我们一个明确的用例吗? 为什么你需要这个延迟?你打算如何使用它?
标签: c# unity3d return-value invoke