Unity iOS IPv6 - сбой IL2CPP в UnityEngine.Experimental.Networking

Чтобы иметь возможность снова отправлять в магазин приложений (для опубликованной игры), нам нужно было заставить все работать на IPv6. Поэтому мы обновили Unity до версии 5.3.5p2 (доступна последняя исправленная версия)

Мы прошли доработку всех наших сетевых интерфейсов (мы использовали классические запросы http для внутренних и серверных соединений бэкэнда для загрузки ресурсов) и поменялись местами с UnityWebRequest, DownloadHandler и UploadHandler из UnityEngine.Experimental.Networking

Все отлично работает на редакторе и Android, но для iOS это просто... вылетает.

Мы используем: Unity 5.3.5p2 xCode 7.2 и iPad2 с iOS 9.3.2 Настройки сборки: Универсальная архитектура IL2CPP (мин. IOS 7.1) Уровень API.Net 2.0 Strip Engine Engine установлен на OFF Параметры AOT-Compile установлены на: mint-trampoline 512 (мы использовали это для моно-скриптинга). В Xcode: Биткод отключен, уровень оптимизации установлен на (для выпуска и отладки): Нет [-O0] Вот ошибка, которую мы получаем на консоли при запуске игры:

Не удалось найти метод GetProgress в [UnityEngine.dll]UnityEngine.Experimental.Networking.DownloadHandler . , Не удалось найти метод ReceiveContentLength в [UnityEngine.dll]UnityEngine.Experimental.Networking.DownloadHandler . , [имя проекта] было скомпилировано с оптимизацией - степпинг может вести себя странно; переменные могут быть недоступны.

(мы очень просто реализовали DownloadHandlerScript с управляемым статическим буфером)

Когда мы работаем с моно в качестве скриптового интерфейса, все работает нормально. Но IL2CPP для нас обязателен. Спасибо за помощь.

2 ответа

Когда мы работаем с моно в качестве скриптового интерфейса, все работает нормально. Но IL2CPP для нас обязателен.

Весьма вероятно, что функция, из которой вы вызываете UnityWebRequest еще не реализован на стороне IL2CPP, или это простая ошибка.

Обратите внимание, что вы используете UnityWebRequest от UnityEngine.Experimental пространство имен, которое явно является экспериментальной версией UnityWebRequest это еще не зрелый. Вам необходимо скачать последнюю версию Unity, которая является Unity 5.4. В 5.4 UnityWebRequest перемещен в UnityEngine.Networking пространство имен и другие ошибки были исправлены в этом новом выпуске. Загрузите Unity's 5.4.0b21 здесь.

Если это не сработает, используйте Unity WWW API вместо UnityWebRequest, Это безопасно IPv6 в версиях>= 5.3. Также файл для сообщения об ошибке, если UnityWebRequest не работал после обновления Unity до 5.4.

Это, вероятно, проблема с удалением управляемого кода. Я опубликовал возможную работу на форумах Unity здесь:

http://forum.unity3d.com/threads/unity-ios-and-ipv6-support.404938/

Другие вопросы по тегам