私はゲームを開発中で、レベル情報をJSON形式で保存しています。これらのレベルは非常に大きいので、我々は単なるC#でそれらを格納するために切り替わっ:MonoTouch AOTコンパイラ - 大規模メソッドが失敗する
- トップレベルの方法は、レベル/オブジェクト
- の名前のswitch文を持っているいくつかの自動生成の方法があります。 「アップ新」標準のプロパティinititalizers とのオブジェクトツリー
例:これらのメソッドを除き
private OurObject Autogenerated_Object1()
{
return new OurObject { Name = "Object1", X = 1, Y = 2, Width = 200, Height = 100 };
}
が非常に大きいとリストを入れ子にしている/言葉遣い他のオブジェクトの牡羊などを使用します。
これは、レベルを2〜3秒から1秒まで(Windowsでは)読み込む時間を短縮しました。 JSONと比較してILをコンパイルすると、データのサイズもかなり小さくなります。
問題は、我々はMonoTouchでのためにMonoDevelopの中でこれらをコンパイルするとき、我々は取得されています
-v -v -v
で
mtouch exited with code 1
は、私たちがエラーを見ることができ、オン:
MONO_PATH=/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app /Developer/MonoTouch/usr/bin/arm-darwin-mono --aot=mtriple=armv7-darwin,full,static,asmonly,nodebug,outfile=/var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp54777849.tmp/monotouch.dll.7.s "/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/monotouch.dll"
AOT Compilation exited with code 134, command:
MONO_PATH=/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app /Developer/MonoTouch/usr/bin/arm-darwin-mono --aot=mtriple=armv7-darwin,full,static,asmonly,nodebug,outfile=/var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp54777849.tmp/DrawAStickmanCore.dll.7.s "/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/DrawAStickmanCore.dll"
Mono Ahead of Time compiler - compiling assembly /Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/DrawAStickmanCore.dll
* Assertion: should not be reached at ../../../../../mono/mono/mini/mini-arm.c:2758
限界がありますAOT用にコンパイルするときに、メソッドの行数に?これを解決するためにmtouch
に渡すことができるいくつかの議論がありますか?いくつかのファイルは正常に動作しますが、特にエラーの原因となるのは3,000行の方法です。シミュレータのためのコンパイルは何に関係なく正常に動作します。
これはまだ実験的なので、これはかなりクレイジーな状況です。
小さなレベルで動作しますか? –
はい、小さいレベルでうまく動作します。特定のブッシュやツリーを追加するとすぐに問題が発生し、シミュレータはうまく動作します。 – jonathanpeppers
バグレポートを記入してください:) – poupou