【问题标题】:How to wrap Unity3d C# wait instruction (which waits with some yield return) into a saparate function or class?如何将 Unity3d C# 等待指令(等待一些收益返回)包装到单独的函数或类中?
【发布时间】:2012-08-11 01:01:25
【问题描述】:

所以我发现我的 salfe 在我的班级的 3 个函数中重复了 3 次类似的代码,类似于

var obj = ...
while (!obj.isDone) {
      yield return obj;
}

在 Unity3d 中,它与 AssetBundleRequest、WWW 和其他一些 asinc 类有关。我调用该代码的函数返回IEnumerator,并且在这样的wait 调用之后只有yield returns。我想知道如何将这样的wait 包装到某个模板函数中,该函数可从我的函数中调用,其中包含一个日志yeld return func<typeof(obj)>(obj) 或类似的东西,只有在obj.isDone 时才会结束?

【问题讨论】:

    标签: c# .net unity3d


    【解决方案1】:

    你不能只yield return obj; 一次吗? doc for AsyncOperation 是定义 isDone 的地方,似乎是这样说的:

    您可以让步直到异步操作继续...

    如果没有,您可以编写如下代码:

    public static IEnumerator UntilDone(AsyncOperation op)
    {
      while (!op.isDone) {
        yield return op;
      }
    }
    //in a method:
    yield return StartCoroutine(UntilDone(obj));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      相关资源
      最近更新 更多