Version: 2017.3
Первые шаги в iOS разработке
iOS account setup

Основы Unity iOS

Этот раздел посвящён самым распространённым вопросам, которые возникают при начале работы с iOS.

Подготовки

Я только что получил от Apple подтверждение разработчика iPhone, но я никогда ранее не разрабатывал для iOS. С чего мне начать?

О: Скачайте SDK, доступный на сайте разработчиков Apple, и укажите вашу команду, устройства и provisioning профили. Мы предлагаем вам базовый список шагов, чтобы начать работу.

Могут ли игры Unity запускаться на iPhone Simulator?

О: Нет, но Unity iOS может собирать в iPad Simulator, если вы используете самую свежую версию SDK. Однако сам по себе симулятор приносит не очень много пользы для Unity, поскольку он не симулирует всю входящую информацию из iOS, или не симулирует производительность, которую вы получите на iPhone/iPad. Вам следует проверять игровой процесс напрямую изнутри Unity, используя iPhone/iPad для дистанционного управления, в то время как Unity Remote управляет приложением. Тогда, когда вы будете готовы протестировать производительность и оптимизировать игру, то публикуйте игру на iOS устройства.

Функции Unity

Как мне работать с сенсорным экраном и акселерометром?

О: В справке по скриптингу внутри вашей копии Unity iOS вы найдёте классы, которые предоставляют доступ к функционалу устройства, который вам понадобится при разработке ваших приложений. Для дополнительной информации, см. Input

Мои существующие системы частиц на iOS работают очень медленно. Что мне делать?

О: У iOS относительной низкий филлрейт. Если ваши частицы покрывают достаточно большую часть экрана в несколько слоёв, это убьёт производительность iOS, даже используя самый простой шейдер. Мы предлагаем запекать ваши эффекты частиц в серии автономных текстур. А затем, во время работы приложения, вы можете использовать 1–2 частицы, чтобы отобразить их в виде анимированных текстур. Таким образом вы можете достичь достаточно приемлемых эффектов, не сильно увеличивая нагрузку.

Я могу сделать игру, которая активно использует физику?

О: На iOS физика очень сильно увеличивает нагрузку, т.к. требует много вычислений. Вам следует полностью избегать коллайдеров MeshColliders, если это возможно, но всё же их можно использовать, если уж очень надо. Чтобы увеличить производительность, используйте низкий Fixed Framerate через Edit->Time->Fixed Delta Time. Рекомендуется framerate в районе 10–30. Включите интерполяцию Rigidbody, чтобы достичь более гладкого движения, в то время как физика использует низкий Framerate. Чтобы достичь полностью гладкой частоты кадров без колебаний, лучше всего использовать значение deltaTime, основанное на средней частоте кадров, которая ваша игра имеет на iOS. Рекомендуется либо использовать такое же значение, либо в 2 раза меньше. Например, если у вас 30 FPS, для Fixed Framerate вам следует использовать 15 или 30 FPS (0.033 или 0.066).

Могу ли я получить доступ к галерее, музыкальной библиотеке или нативному плееру iPod через Unity iOS приложение?

О: Да - если вы это реализуете. Unity iPhone поддерживает нативную систему плагинов, в которой вы можете добавлять любой функционал, который вам понадобится - включая получение доступа к галерее, музыкальной библиотеке, плееру iPod и любой другой функции, которую предлагает iOS SDK. Unity iOS не предоставляет API для доступа к этим функциями при помощи скриптов Unity.

Немного о UnityGUI

Как UnityGUI влияет на производительность моих игр?

A: UnityGUI достаточно увеличивает нагрузку, если используется много элементов управления (controls). В идеале стоит ограничить использование UnityGUI до игровых меню или минимального интерфейса во время игры. Важно учесть, что каждый объект со скриптом, который содержит вызов OnGUI(), потребует дополнительного времени процессора, даже если блок OnGUI() пуст. Лучше всего отключить все скрипты, которые вызывают OnGUI(), если элементы управления интерфейса (GUI Controls) не используются. Вы можете сделать это пометив скрипт enabled = false.

Ещё какие-нибудь подсказки по использованию UnityGUI?

О: Попробуйте использовать GUILayout как можно меньше. Если вы вообще не используете GUILayout ни в одном из вызовов OnGUI(), вы можете полностью отключить GUILayout рендеринг, используя MonoBehaviour.useGUILayout = false; Это вдвое улучшит производительность рендеринга интерфейса. И наконец, используйте как можно меньше элементов интерфейса в 3D сценах.

Первые шаги в iOS разработке
iOS account setup