繁体   English   中英

如何委派动态方法名称和动态参数的调用

[英]How do I delegate calling of dynamic method names and dynamic parameters

是否有可能盲目处理动态方法名称和动态参数?

我正在使用Unity和C#。 我希望将Gizmo的图形在从场景中移除(销毁)后保留一会儿,所以我想将图形责任动态传递给另一个对象。

例如,我希望能够做到这一点:

GizmoManager.RunThisMethod(Gizmos.DrawSphere (Vector3.zero, 1f));
GizmoManager.RunThisMethod(Gizmos.DrawWireMesh (myMesh));

如您所见,正在调用的方法和参数计数各不相同。 有没有一种方法可以实现我的目标,而无需为每种Gizmo类型编写非常复杂的包装器? (共有11个。)(目标:我还想添加自己的参数,以说明管理器应继续绘制小控件的时间,但这是可选的。)

我建议将通话转换为lambda。 这将使GizmoManager可以根据需要多次调用它。

class GizmoManager
{
  void RunThisMethod(Action a)
  {
    // To draw the Gizmo at some point
    a();
  }
  // You can also pass other parameters before or after the lambda
  void RunThisMethod(Action a, TimeSpan duration)
  {
    // ...
  }
}

// Make the drawing actions lambdas
GizmoManager.RunThisMethod(() => Gizmos.DrawSphere(Vector3.zero, 1f));
GizmoManager.RunThisMethod(() => Gizmos.DrawWireMesh(myMesh));

// You could also draw multiple if needed:
GizmoManager.RunThisMethod(() => {
    Gizmos.DrawSphere(Vector3.zero, 1f);
    Gizmos.DrawWireMesh(myMesh);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM