unity startcoroutine带参数
时间: 2023-12-22 09:04:20 浏览: 152
打开app传参和接收参数apk.zip
要在Unity中的StartCoroutine函数中传递参数,您可以使用以下两种方法之一:
1.使用lambda表达式
您可以使用lambda表达式将参数传递给协程函数。以下是示例代码:
```csharp
public class Test : MonoBehaviour
{
private IEnumerator MyCoroutine(int myParam)
{
// 协程函数体
yield return null;
}
private void Start()
{
int myParamValue = 10;
StartCoroutine(() => MyCoroutine(myParamValue));
}
}
```
此代码将MyCoroutine函数作为lambda表达式传递给StartCoroutine函数,该表达式将myParamValue参数传递给MyCoroutine函数。
2.使用IEnumeratorWrapper
您还可以使用IEnumeratorWrapper类将参数传递给协程函数。以下是示例代码:
```csharp
public class Test : MonoBehaviour
{
private IEnumerator MyCoroutine(int myParam)
{
// 协程函数体
yield return null;
}
private void Start()
{
int myParamValue = 10;
StartCoroutine(new IEnumeratorWrapper(MyCoroutine(myParamValue)));
}
}
public class IEnumeratorWrapper
{
private readonly IEnumerator _enumerator;
public IEnumeratorWrapper(IEnumerator enumerator)
{
_enumerator = enumerator;
}
public bool MoveNext()
{
return _enumerator.MoveNext();
}
public void Reset()
{
_enumerator.Reset();
}
public object Current
{
get { return _enumerator.Current; }
}
}
```
此代码创建了一个IEnumeratorWrapper类,该类将MyCoroutine函数作为参数传递给了StartCoroutine函数。这个包装器类将允许您传递参数给协程函数。
无论哪种方法,都可以在协程函数中使用传递的参数。例如,在MyCoroutine函数中,您可以使用以下代码访问参数:
```csharp
private IEnumerator MyCoroutine(int myParam)
{
Debug.Log("myParam = " + myParam);
yield return null;
}
```
阅读全文