簡體   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