c# - Unity 调用返回值
问题描述
我在下面有一个 C# 方法(用于 Unity):
int CheckLength()
{
Collider[] enemies = Physics.OverlapSphere(transform.position, transform.localScale.x);
return enemies.Length;
}
我想延迟使用这个方法,所以我必须使用 Invoke() 方法。但问题是我无法获取方法的返回值,因为 Invoke() 方法的返回类型是 void。如何延迟使用此方法并获取返回值?
解决方案
有很多方法可以在延迟后获得“返回”值。
其中之一是给协程一个带有参数的动作作为“返回”或更准确地说不返回但继续。
using System;
.
void Start(){
StartCoroutine(Return5AfterDelay(
(returnedValue)=>{
// after
print(returnedValue);
}
));
}
IEnumerator Return5AfterDelay(flood delay, Action<int> continueWith){
yield return new WaitForSeconds(delay);
continueWith(5);
}
推荐阅读
- javascript - 在画布的同位点上对两种类型的节点进行分组
- node.js - node.js express:如何制作文件夹选择器?
- c - code::blocks 动画/自动单步源
- php - 删除关联数组中的父元素
- android - 从图库中选择照片(onActivityResult() 问题 - 我是这么认为的)- Fragment Android
- blogger - 我错误地删除了博客中的标题小部件。我该如何重新安装它?
- javascript - 使用没有窗口对象的 window.AudioContext
- sql - 如何根据列中的值禁用 oracle apex 中的链接
- python - 在 sympy 中获取复杂表达式的系数
- tensorflow - 在 TensorFlow 中联合训练多个不同的数据集