您的位置:首页 > 移动开发 > Unity3D

Unity3d的iOS调试实用技巧

2016-06-12 16:50 351 查看
其实调试方法也不能算”Debug”,,只能算”Log”,目测和一般程序猿不同,这是我一贯的编程解决方法,因为你根本不可能在一个跨平台,开源,多语言嵌入的源码还执行传统的debug,u3d,unreal4均是这样的平台,如果有更好的“调试”(troubleshooting, monitor, efficiency)方法欢迎指出

一开始以为是什么古灵精怪的错误,后来才发现打错特错,一个很简单的错误也会导致爆内存地址,¥#¥%!@#%#@

毕竟2016了,4年了,这些”Debug”很多人已经掌握,官方资料必须看,U3d Manual

我除了Manual,还参考了这个博客风宇冲Unity3D教程学院

一个国内“老师”的说辞:“5.3.3亲测无效”

(我自己经过测试和不同尝试,却是可以的,可行方法在最后,老师,你又说不对了,自己教的自己都不测试一下么?)

在用Unity3d开发iOS游戏的过程中,经常会面临一个问题,unity3d build到Xcode里的工程很难调试。因为出错时看到的都是些乱七八糟的内存地址 就算根据 plt_Unity3d_GameObject_Find_String之类的信息你也不知道出错在哪。而Xcode的处理方式Enable Zombie Objects和bt指令对Unity3d的出错检测也没什么帮助。

开启Development Build,Script Debugging

有一个很好的解决办法。点击File->Build Settings, 有如下界面。然后把Development Build勾上,就开启了开发模式(在真机运行时右下角有Development Build字样)。之后再勾Script Debugging,就开启了脚本Debug。



当出现错误时

如下,会告诉你错误类型为NullReferenceException。在调用Object时 Object为空。这个错误发生在UIManager.Update () -> UpdateBar()里,UIManager.CS文件里的第206 行代码。

NullReferenceException: A null value was found where an object instance was required.

at UIManager.UpdateBar () [0x000c3] in /Users/Chukong/Desktop/SVN_Folder/PocketClimber_105/PocketClimber_1.05_UnityProj/Assets/Scripts/UI/UIManager.cs:206

at UIManager.Update () [0x00015] in /Users/Chukong/Desktop/SVN_Folder/PocketClimber_105/PocketClimber_1.05_UnityProj/Assets/Scripts/UI/UIManager.cs:127

怎么样,是不是很方便?

关于Profiler

开发模式下还有另外一个选项 - Autoconnect Profiler自动连接至 Profiler(分析器) 就是性能监测工具。用起来比较麻烦,得电脑与移动设备都处在相同的Adhoc 无线网中。iOS下Profiler不如Xcode的Instrument使用起来方便。

对Profile监测iOS有兴趣的同学,可以看看下面的链接:

http://answers.unity3d.com/questions/340373/wth-profiler-not-working-with-ios.html

http://answers.unity3d.com/questions/51478/unity-pro-profiler-cant-find-my-iphone.html

最新xcode7,unity3d 5.3.3,试了上面方法很9都不行

最后改编译为IL2CPP即可,发布到最新app store也需要这个





最种结果已经不会显示2进制,单片机码了,虽然还不能定位到哪一行,但能看到是哪个类的哪个方法出问题,已经跨出一大步,继续苦逼吧,程序猿。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息