Unity按钮OnClick在PC正常运行,安卓端点击无函数执行求助
安卓端Unity按钮点击无响应(PC端正常)求助
我写了一个切换Canvas的函数,PC端运行完全正常,但安卓端按钮能正常触发点击反馈(点击会变色),却不执行绑定的对应函数,求帮忙解决问题。
相关信息
- 按钮Inspector面板:已配置OnClick事件,绑定了对应脚本的
SwapToCanvas(int)函数,并传入了正确的整数参数 - 按钮层级视图:按钮位于指定Canvas下,层级结构正常
对应函数代码
public void SwapToCanvas(int n) { if (controller != null) { Destroy(controller.LastGuia.gameObject); } else { controller = GameObject.Find("GuiaController").GetComponent<GuiaController>(); Destroy(controller.LastGuia.gameObject); } controller.GetComponent<GuiaController>().LastGuia = Instantiate(SwapTo[n]); Destroy(this.gameObject); }
排查方向建议
- 触摸遮挡问题:检查按钮所在Canvas的Render Mode、Sorting Layer和Order in Layer,确保按钮处于最上层,没有被其他UI元素或带碰撞体的3D物体遮挡(即使视觉上不可见,碰撞体也可能拦截触摸事件)
- 事件绑定校验:重新在Inspector中检查按钮的OnClick绑定,确认绑定的脚本对象未被意外销毁,传递的int类型参数正确
- 安卓输入配置:在Unity
Edit > Project Settings中,若使用新输入系统,确认已启用触摸支持;若用旧输入系统,检查Touch相关设置是否开启 - 日志排查空引用:在函数开头添加
Debug.Log("SwapToCanvas触发,参数n=" + n + ",controller状态:" + controller);,通过安卓Logcat查看是否有报错或函数未触发的日志信息 - 销毁时机调整:
Destroy(this.gameObject)可能在函数执行完成前就销毁了脚本所在对象,尝试延迟销毁:Destroy(this.gameObject, 0.1f) - IL2CPP编译优化:若采用IL2CPP编译安卓包,检查Player Settings中是否开启了过度的代码裁剪,可尝试关闭代码优化,或给
SwapToCanvas函数添加[Preserve]特性(需引入UnityEngine.Scripting命名空间)
内容的提问来源于stack exchange,提问作者Oscar Borrego Rusticus
相关产品推荐
相关产品推荐

