有些函数可以通过名称调用其他函数(例如:Invoke)。
通常,我是这样使用的:
void Start()
{
Invoke("SelfDestroy", 2);
}
public void CancelDestroy()
{
CancelInvoke("SelfDestroy");
}
void SelfDestroy()
{
Destroy(gameObject);
}
但是我是一个懒惰的人,所以我不想多次键入一个字符串(我可能会输入错误),所以我这样做是这样的:
const string SELF_DESTROY_METHOD = "SelfDestroy";
void Start()
{
Invoke(SELF_DESTROY_METHOD, 2);
}
public void CancelDestroy()
{
CancelInvoke(SELF_DESTROY_METHOD);
}
void SelfDestroy()
{
Destroy(gameObject);
}
但是它仍然不满足我的需要,我希望常量字符串SELF_DESTROY_METHOD
以编程方式与方法SelfDestroy
匹配,因此,如果我更改方法SelfDestroy
的名称,则值常量字符串SELF_DESTROY_METHOD
会相应地自动更新。在C#中可以吗?
答案 0 :(得分:0)
感谢塞巴斯蒂安·舒曼的comment,解决方案是nameof。 代码应该是
const string SELF_DESTROY_METHOD = nameof(SelfDestroy);
void Start()
{
Invoke(SELF_DESTROY_METHOD, 2);
}
public void CancelDestroy()
{
CancelInvoke(SELF_DESTROY_METHOD);
}
void SelfDestroy()
{
Destroy(gameObject);
}
注意:我使用Unity并获得了脚本运行时版本.NET 3.5
,所以出现了错误Feature 'nameof operator' is not available in C# 4. Please use language version 6 or greater.
,因此我将脚本运行时版本升级到.NET 4.x
,并且可以运行,请检查{ {3}},以获取更多信息。