Unity 3.4.2f、XCode バージョン 4.2.1、iOS 5.0 SDK で開発しています。
私のゲームは、メイン シーンをロードする再生ボタンのあるメイン メニューで構成されています。ゲームは同僚がデバイスに合わせて構築でき、問題なく動作します。ただし、ゲームをビルドするたびに、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から再更新し、適切にビルドできる同僚が同じことを確実に行えるようにしました。それがうまくいかなかったとき、私は彼に xcode プロジェクトの .zip を送ってもらい、それをビルドしてみましたが、Prime31 Unity プラグインはそれを好まず、別のユーザー ディレクトリにある彼のソース フォルダーを指しています。彼のマシン。そこで、彼に unity ソースを圧縮して送ってもらいました。これには、Prime31 プラグインの再インストールが必要でした。その後、ビルドすることができましたが、結果は同じでした。シーンのロード間のクラッシュ。
私たちは両方ともまったく同じ物理 iPad デバイスを使用して構築しています。どちらも iOS 5.0 に対してビルドしていますが、デバイスは 4.3.3 です。
すべての xcode 設定を削除してから、Mac から /Developer フォルダー全体を削除し、xcode を完全に再インストールしました。同じ結果です。Unity を再インストールしてみますが、Unity Pro キーを無効にしてから再度有効にする必要があるかどうかわかりません。
これを複雑で難しいものにするために、私はあまりにも多くの時間を費やしてきました。確かに、これは私の側では理解できないほど単純で愚かなことだとわかっていますが、もはや木を見て森を見ることはできません。