unity/Android unity应用安卓端快速找出报错解决办法


最近几天一直在处理一个很神秘的bug,有天晚上因为这个bug还把我整破防了。这个bug在电脑端运行时不会出现而在手机端运行的时候就会立马跳出来。然而项目中并没有对应用运行平台进行差别化操作的代码,又由于是手机端的缘故报错无法显示出来,所以处理了好几天才找到端倪。(原来是手机性能不及电脑所以生成物体较慢一些导致的时差问题)现对我找出bug的方法进行总结,防止其他人在安卓端无法轻松发现bug而陷入困境。


UI准备
在场景中新建一个文本显示UI来接受debug的报错,如下图所示:
在这里插入图片描述
获取报错
将以下代码挂到场景任意物体上:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    public Text debug_text;
    void Awake()
    {
        get_error();
    }
    public void get_error()
    {
        Application.logMessageReceived += (string condition, string stackTrace, LogType type) =>     //绑定收到日志消息事件
        {
            if (type == LogType.Exception || type == LogType.Error)         //判断是否是异常或报错
            {
                debug_text.text = condition + "\n" + stackTrace;            //信息打印在屏幕上
            }
        };
    }
}

代码中debug_text是之前添加的文本UI,可以根据自己的需要更换成其他UI类型。
代码判断接受的日志信息是异常和错误类型,也可以根据需要添加其他类型的日志消息。
制造一个错误并打包测试下结果吧:

GameObject.Find("这是一个不存在的东西").GetComponent<SpriteRenderer>();

得到结果如下:
在这里插入图片描述


显示报错行数
上面得到的结果虽然知道是哪个函数报错了,但是还是不清楚具体在多少行。在体量比较大的函数中想要找到错误还是不太容易,但是只要在导出安装包的时候勾选这一项就行了(开发模式):
在这里插入图片描述
结果如下:
在这里插入图片描述

以上就是该解决方案的大致过程,如果有什么问题或者更简便的方法可以在评论区留言。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值