Кто-то может предположить, что статистические опросы – важная составляющая любой деятельности, дающая развернутую информацию о том или ином процессе. Но не в случае с портированием игр. Информация о том, что 99% разработчиков ассоциируют этот процесс со словом «боль», думаю, не удивит никого. В связи с этим нужно разобраться, а как все-таки начать работать с платформой Windows Phone в связке с Unity. Разбираться будем на примере последней версии Unity (на момент написания статьи это 4.5.2) и магазинов Windows, и попробуем понять, так ли это сложно на самом деле.
Уведомление: весь показанный в статье код не является образцом для подражания, примером идеального кода и прочих вымышленных и не существующих в природе вещей. Практики, примененные в статье, могут являться одними из множества решений конкретной проблемы. А могут и не являться.
Для начала нам с вами, очевидно, понадобится игра. Пара часов несложного кодирования и вымученного геймдизайна подарят нам следующий шедевр игровой индустрии прямиком из 1982 года.
Игрок двигает мышью вверх-вниз, кораблик его незамедлительно слушается, снаряды вылетают, удивленные враги из другой популярной игры бесславно погибают в пучине Destroy(gameObject). В общем, все просто.
Здесь начинается причина боли номер один – поддержка всех возможных разрешений экранов. В нашем случае на помощь приходит простой скрипт, который мы используем для главной камеры в процессе разработки. Скрипт меняет размер game view так, чтобы он (размер) соответствовал соотношению сторон используемого экрана.
Скрипт на pastebin
Для сборки Unity-игры под Windows Phone или Windows 8 (с последующей публикацией в Store) нужны Windows Phone SDK 8.0 (который включает в себя бесплатный VS2013 Express), Windows 8 или выше (есть пробная 90-дневная версия), учетная запись Microsoft ( тыц), учетная запись разработчика (студенты могут получить ее бесплатно по программе DreamSpark) и, очевидно, устройство на нужной платформе. Unity, согласно оффициальной документации поддерживает эмуляторы, но работает в них не очень хорошо.
Обработка ввода
В случае с мышью нам практически не нужно делать дополнительных доработок кода – обработка нажатий и перемещений мыши будет достаточным условием для того, чтобы это все работало для touch-экранов мобильных устройств без лишнего шаманства.
То есть, Input.mousePosition.x будет возвращать место, где сейчас находится мышь в случае версий для компьютера, и координаты касания (любого) в случае устройства с тачскрином. Аналогично и с остальными методами. Если вы разрабатываете игру сразу под тач-интерфейс или хотите обработать какие-то специфические жесты, то на помощь вам придет Input.Touch.
Кроме того, если вы хотите, например, выводить целевые сообщения пользователям определенной платформы, можно использовать следующие конструкции:
#if UNITY_EDITOR
// код, исполняемый только в редакторе unity.
Debug.Log(«Unity Editor»);
#endif
Для Windows Phone 8 эта директива может выглядеть так:
#if (UNITY_WP8 && !UNITY_EDITOR) или просто #UNITY_WP8
Подробный список директив и парочку примеров можно посмотреть в официальной документации Unity.
Чтобы собрать игру, вам нужно выбрать целевую платформу Windows Phone 8 в меню File – Build Settings.
Увеличить
После сборки Unity сгенерирует проект Windows Phone Xaml/C#, который нужно будет скомпилировать в Visual Studio для получения финального пакета (XAP) и файла-манифеста, которые нужны для непосредственного запуска игры под Windows Phone. Отладочный запуск проекта через Visual Studio на реальном устройстве выглядит вот так: