Unity中Button绑定函数无法检索识别的开发问题咨询
Unity蛇梯棋开发按钮绑定函数检索不到问题解答
问题描述
- 基于Snake&Ladder(蛇梯棋)做自定义修改,实现了玩家抵达蛇头或梯子底部时弹出问题弹窗的逻辑
- 目前弹窗可以正常调出,但弹窗内Button对应的绑定函数无法找到,在编辑器的函数检索列表里完全搜不到目标函数

- 目前Button相关代码直接写在了玩家抵达蛇头/梯底后执行transform位移的逻辑代码段中,核心疑问:Unity是否不允许将Button代码与其他Button相关代码分开放置?
解答
Unity从来没有要求按钮相关代码必须集中放在一起,你搜不到函数和代码放置的位置分散没有任何关系,本质是你的代码写法不符合Unity事件系统的反射识别规则,常见原因和修复方式如下:
- 首先检查按钮响应函数的访问权限:Unity编辑器的OnClick事件列表只能检索到挂载在目标游戏对象上的脚本内的
public成员方法,私有方法、写在逻辑代码块内部的局部函数根本不会被系统扫描到,自然搜不到。 - 不要把按钮点击后的执行逻辑写在位移判断的代码块内部:如果你把响应函数写在类似
if (玩家到达蛇头位置) { // 此处写按钮方法 }的块级作用域里,这个函数属于局部函数,不是脚本类的公开成员,Unity根本识别不到。你需要把按钮点击后要跑的逻辑抽成脚本类层级的public方法,再回到编辑器里绑定即可。 - 检查绑定时拖入的游戏对象是否正确:如果拖入的对象上没有挂载你写了响应函数的脚本,也会出现搜不到函数的情况。
- 如果你是运行时动态生成弹窗、动态创建按钮,根本不需要走编辑器拖拽绑定的流程,直接在代码里用
你的按钮组件.onClick.AddListener(要执行的方法)做动态绑定就行,这种写法不需要函数出现在编辑器的检索列表里。
内容的提问来源于stack exchange,提问作者Boss2Topp
相关产品推荐
相关产品推荐

