The*_*ler 12 c# unity-game-engine
在Unity中使用coroutines或InvokeRepeating时,您必须提供一个字符串,其中包含您要调用的函数的名称.虽然如果更改该函数的名称会很痛苦,因为您必须记住更改使用它的协同程序.这样做有更干净的方法吗?
目前它看起来像这样:
InvokeRepeating ("SendChangedValues", SEND_RATE, SEND_RATE);
Run Code Online (Sandbox Code Playgroud)
虽然有类似的东西会很好
InvokeRepeating (SendChangedValues.Name(), SEND_RATE, SEND_RATE); //or
InvokeRepeating (functions.GetName(SendChangedValues), SEND_RATE, SEND_RATE);
Run Code Online (Sandbox Code Playgroud)
这可能在c#中吗?或者其他确保我在更改函数名称而不更改这些字符串时收到错误/警告的内容.
编辑1:我能想到的最干净的事情是使用函数的名称创建一个const字符串,并将它放在函数本身之前.因此,更难忘记更改字符串,因为它就在它上面,而且我也只需要更改一个const字符串来更改所有协同程序.
谢谢!
Raj*_*dar 10
啊......如果它是下一个C#版本,你可以使用nameof运算符.
现在,这有助于你的事业吗?
private static string GetFunctionName(Action method)
{
return method.Method.Name;
}
Run Code Online (Sandbox Code Playgroud)
叫做使用:
string methodName = GetFunctionName(SendChangedValues);
Run Code Online (Sandbox Code Playgroud)
您可能想要探索不同的委托类型..动作,Func等.
上面唯一的问题是,对于每个方法签名,您可能需要定义正确的签名/重载来获取名称.
| 归档时间: |
|
| 查看次数: |
4056 次 |
| 最近记录: |