首页 > 解决方案 > Unity 调用返回值

问题描述

我在下面有一个 C# 方法(用于 Unity):

int CheckLength()
{
    Collider[] enemies = Physics.OverlapSphere(transform.position, transform.localScale.x);
    return enemies.Length;
}

我想延迟使用这个方法,所以我必须使用 Invoke() 方法。但问题是我无法获取方法的返回值,因为 Invoke() 方法的返回类型是 void。如何延迟使用此方法并获取返回值?

标签: c#unity3dreturn-valueinvoke

解决方案


有很多方法可以在延迟后获得“返回”值。

其中之一是给协程一个带有参数的动作作为“返回”或更准确地说不返回但继续。

using System;

.

void Start(){
    StartCoroutine(Return5AfterDelay(
        (returnedValue)=>{
            // after
            print(returnedValue);
            
        }
    ));
}

IEnumerator Return5AfterDelay(flood delay, Action<int> continueWith){
    yield return new WaitForSeconds(delay); 
    continueWith(5);
}

推荐阅读