You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:36:27