我正在使用iOS 5.0 SDK在Unity 3.4.2f,XCode版本4.2.1中进行开发。
我的游戏包含一个主菜单,其中包含一个加载主场景的播放按钮。游戏可以由同事构建到设备上并且工作得很好。每当我构建游戏时,它会在加载第二个场景时崩溃。这已经是我存在超过一周的祸根了。
来自设备的崩溃日志如下所示:
Exception Type: EXC_BAD_ACCESS (SIGILL)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00ed4e90
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 ??? 0x050000c0 0 + 83886272
1 ??? 0xfffffff8 0 + -8
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x33babfbc kevent + 24
1 libdispatch.dylib 0x328ebed4 _dispatch_mgr_invoke + 744
2 libdispatch.dylib 0x328ecf3a _dispatch_queue_invoke + 70
3 libdispatch.dylib 0x328ec4ec _dispatch_worker_thread2 + 228
4 libsystem_c.dylib 0x3489f58a _pthread_wqthread + 258
5 libsystem_c.dylib 0x3489fbbc start_wqthread + 0
*Note: Removed various other non-crashed threads through thread 11*
Thread 0 crashed with ARM Thread State:
r0: 0x01ab7094 r1: 0x00000000 r2: 0x00000000 r3: 0x3f800000
r4: 0x04020000 r5: 0x3987cc80 r6: 0x01004d08 r7: 0x080000c1
r8: 0xc1080000 r9: 0x00000000 r10: 0xc1050000 r11: 0xc1040000
ip: 0x2fdfe144 sp: 0x00ed4e9c lr: 0x00dfc558 pc: 0x050000c0
cpsr: 0x20000030
哪个不是最有帮助的,但是从我在这里和其他各种网站上读到的内容,我应该能够使用像0x050000c0这样的内存地址来确定实际代码中我崩溃的位置?首先是我们尝试过的其他一些事情......
该项目属于SVN回购,因此我已将整个源目录吹走并从SVN重新更新,确保CAN正确构建的同事也做了同样的事情。当它不起作用时,我让他给我发送了一个他的xcode项目.zip尝试构建它,但Prime31 Unity插件不喜欢这样,他们指向他的源文件夹,它位于不同的用户目录上他的机器。所以我让他拉上他的统一源并发送它,这需要重新安装Prime31插件,然后我能够构建,但仍然具有相同的结果。场景加载之间崩溃。
我们都使用完全相同的物理iPad设备来构建。我们都是针对iOS 5.0构建的,而设备是4.3.3。
我已经删除所有xcode设置,然后从我的Mac删除整个/ Developer文件夹并完全重新安装xcode。结果相同。我会尝试重新安装Unity,但我不确定是否需要停用Unity Pro密钥然后重新激活?
我花了太多时间来做一些复杂而困难的事情。我知道这肯定是我无法理解的简单和愚蠢的东西,但我再也看不到森林的树木,所以我问你,亲爱的互联网!
答案 0 :(得分:1)
解决!我把这篇文章链接到一位朋友,他问道:“你确定你们都是同一个统一版本吗?”我查了一下,我实际上是Unity版本3.4.1f而不是3.4.2f。更新了Unity,一切都很好。据推测,这些Prime31插件的最新版本不喜欢旧版本的Unity?