Денис Asked:2020-06-19 13:34:29 +0800 CST2020-06-19 13:34:29 +0800 CST 2020-06-19 13:34:29 +0800 CST 统一和返回类型 772 今天,我第一次发现了在 Unity 中使用按钮的一个特点——你不能在按钮上放置一个带有返回值的函数。例如: public int WoodCounter() { /* Какой-то код */ return Wood; } 此方法在 OnClick() 列表中不可见。只有Void. 你能给我解释一下这种现象的原因吗? unity3d 1 个回答 Voted Best Answer M. Green 2020-06-19T14:38:53+08:002020-06-19T14:38:53+08:00 “将功能放在按钮上”是对按钮单击事件的方法订阅。单击按钮时,将调用所有订阅者。 可以订阅特定事件的方法取决于用于定义事件的委托的签名。onClick按钮有这个UnityAction。那些。不带参数且不返回值的委托类型。换句话说,如果你创建一个方法: public void WoodCounter(int count) { } 你也不能选择它,因为。它与签名不匹配 - UnityAction。 好吧,正如您在评论中已经正确告知的那样,向按钮返回一些值有什么意义?也许您只是不想解决摆在您面前的问题。 根据我自己的经验,我可以说一件事 - 最好不要通过检查器使用回调分配。事实是,这样的调用几乎不可能从代码中追踪到,而且在某些情况下,您会一直在寻找它的来源。 还有一个不明显的特性——如果你分配给OnClick一个方法调用,然后将该方法设为私有——调用将不会重置,并且仍然会发生,尽管该方法不再是公共的。
“将功能放在按钮上”是对按钮单击事件的方法订阅。单击按钮时,将调用所有订阅者。
可以订阅特定事件的方法取决于用于定义事件的委托的签名。
onClick
按钮有这个UnityAction
。那些。不带参数且不返回值的委托类型。换句话说,如果你创建一个方法:你也不能选择它,因为。它与签名不匹配 - UnityAction。
好吧,正如您在评论中已经正确告知的那样,向按钮返回一些值有什么意义?也许您只是不想解决摆在您面前的问题。
根据我自己的经验,我可以说一件事 - 最好不要通过检查器使用回调分配。事实是,这样的调用几乎不可能从代码中追踪到,而且在某些情况下,您会一直在寻找它的来源。
还有一个不明显的特性——如果你分配给
OnClick
一个方法调用,然后将该方法设为私有——调用将不会重置,并且仍然会发生,尽管该方法不再是公共的。