Unity Android构建特定按钮点击报错求助
Unity Android构建版本特定按钮点击报错排查方案
问题现象
- Android构建版本中点击特定按钮必触发报错,编辑器内运行完全正常
- 仅涉事按钮存在问题,项目中其他按钮在构建版本可正常工作
- 已尝试删除并重新创建EventSystem后重新构建,问题未解决
报错日志(Logcat输出)
2023/02/15 16:51:33.167 3033 3062 Error Unity at UnityEngine.Events.UnityEvent.Invoke () [0x00000] in <00000000000000000000000000000000>:0 2023/02/15 16:51:33.167 3033 3062 Error Unity at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00000] in <00000000000000000000000000000000>:0 2023/02/15 16:51:33.167 3033 3062 Error Unity at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, System.Boolean pressed, System.Boolean released) [0x00000] in <00000000000000000000000000000000>:0 2023/02/15 16:51:33.167 3033 3062 Error Unity at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () [0x00000] in <00000000000000000000000000000000>:0 2023/02/15 16:51:33.167 3033 3062 Error Unity at UnityEngine.EventSystems.StandaloneInputModule.Process ()
排查与解决方法
- 检查事件绑定的对象状态:打开涉事按钮的
OnClick()事件面板,确认绑定的脚本所在GameObject在构建后未被销毁、脚本组件未被禁用。若对象是动态生成的,需确保Android构建中生成逻辑正常执行。 - 重新序列化事件绑定:删除按钮原有点击事件绑定,重新拖拽目标脚本对象并选择对应方法,保存后重新构建。编辑器序列化正常但构建时可能丢失引用,重新绑定可解决这类问题。
- 排查平台相关代码异常:若按钮绑定的方法包含Android平台特有的逻辑(如原生SDK调用、权限申请),检查是否存在未做null判断或平台适配的代码,导致调用时抛出未捕获异常。
- 启用调试日志获取详细堆栈:在PlayerSettings中勾选
Development Build和Script Debugging,重新构建后运行,获取包含用户代码调用栈的完整日志,精准定位出错代码行。 - 检查UI射线检测有效性:确保按钮所在Canvas的
Graphic Raycaster组件启用,按钮的交互组件(如Image、Text)的Raycast Target属性为勾选状态;同时检查是否有其他UI元素在按钮上方遮挡射线(编辑器中可能未察觉层级遮挡)。 - 调整IL2CPP编译选项:若使用IL2CPP构建,尝试关闭
PlayerSettings > Other Settings > Optimization > Optimize Generated Code选项,部分代码优化可能导致UnityEvent调用异常;也可检查脚本中UnityEvent字段是否正确序列化。
内容的提问来源于stack exchange,提问作者Raining Cycles
相关产品推荐
相关产品推荐

