Я работаю над игрой, и мы сохраняем информацию о нашем уровне в формате JSON. Эти уровни являются довольно большими, поэтому мы перешли просто хранить их в простом языке C#:MonoTouch AOT Compiler - большие методы сбой
- Метод верхнего уровня имеет переключатель заявление для названия уровня объекта/
- Есть несколько автоматически генерируемые методов, «новая вверх» наш объект дерево со стандартным inititalizers собственности
Пример:
private OurObject Autogenerated_Object1()
{
return new OurObject { Name = "Object1", X = 1, Y = 2, Width = 200, Height = 100 };
}
Кроме этих методы очень большой и вложенные списки/дикция арий других объектов и т. д.
Это ускорило время загрузки уровня от 2-3 секунд до доли секунды (в Windows). Размер наших данных также значительно меньше, поскольку компилируется IL по сравнению с JSON.
Проблема заключается в том, когда мы собираем их в MonoDevelop для MonoTouch, мы получаем:
mtouch exited with code 1
С -v -v -v
включена, мы можем видеть ошибку:
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
, чтобы исправить это? Некоторые файлы работают нормально, но, в частности, причина, по которой ошибка имеет метод 3000 строк. Компиляция для симулятора отлично работает независимо от того, что.
Это еще эксперимент, поэтому мы понимаем, что это довольно сумасшедшая ситуация.
Работает ли он с небольшими уровнями? –
Да, отлично работает с меньшими уровнями. Как только я добавляю конкретный куст или дерево, начинается проблема - и симулятор отлично работает. – jonathanpeppers
Пожалуйста, заполните сообщение об ошибке :) – poupou