Как протестировать игру unity на телефоне
Перейти к содержимому

Как протестировать игру unity на телефоне

  • автор:

Как найти ошибку? Unity Android

Драсьте. Во время проигрывания игры в Unity нет никаких ошибок, после сборки и установки на телефоне игра постоянно вылетает (в определенные моменты). Проверял пошагово (метод за методом), полностью переписал код, где (как мне кажется) был баг, вылеты продолжились. Вопрос вот в чем, есть ли какой-нибудь способ узнать, какая конкретно ошибка происходит? Рассмотрю все способы и теории, спасибо.

Отслеживать
задан 5 фев 2022 в 10:53
9 2 2 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если получиться, то попробуйте подключить к компьютеру android устройство, с установленным Unity Remote 5, и через него запускать и проверять игру. Вам нужно запустить Profiler, и через него наблюдать проблемный момент.

Заранее надо отметить, что Unity Remote 5 может не заработать. Тогда, если возможно, то попробуйте проверить всё на ios устройстве (даже если игра не для ios). Ибо он работает гораздо чаще, чем на android (вероятно потому, что разработчики «Unity Remote 5», поддерживают приложение для ios устройства в должной мере, чем android). Так или иначе, ошибка вероятно связана с игрой/компиляции игры, нежели с архитектурой самого устройства. Главное найти эту ошибку.

Если вы это пробовали, или это не помогает, есть другой спекулятивный вариант. Это просмотреть видео о том, как правильно настраивать Build на android, ведь там есть тонкости, которые не очевидны (в таком случае, с игрой всё в порядке, и проблема находится в компиляции самой игры на android).

В любом случае, сложно судить, из-за чего игра может не работать. Если она работает в Unity, но после компиляции происходят ошибки, то это может быть достаточно много вещей. И вполне индивидуальных, если это ошибка в коде/компиляции билда.

Тестирование игр в Unity3D и на эмуляторах

Всем привет. Сегодня публикуем вторую часть текстовой расшифровки интенсива, который был проведен в преддверии старта курса «Game QA Engineer. С первой частью можно ознакомиться по ссылке.

Интенсив провела Надежда Чертовских — руководитель отдела QA в компании BeresnevGames и преподаватель OTUS.

План вебинара

  1. Познакомиться с инструментами для тестирования мобильных игровых проектов.
  2. Попробовать запустить игру в эмуляторе Вluestacks.
  3. Попрактиковаться в сборе логов с мобильной игры.
  4. Создать свое тестовое устройство в эмуляторе android studio.
  5. Попытаться пройтись по чек-листу, который составили на первом интенсиве.

Игровые движки

Игровых движков существует довольно большое количество.

Самые популярные игровые движки:

Также существуют и другие игровые движки:

Игры могут создаваться не только в игровых движках, но и языками программирования, то есть ограничений в создании игр нет. Какие-то инструменты позволяют делать это проще, какие-то инструменты поддерживают визуальное программирование. Например, в Unity3D нужно знать именно программирование — там используется C#. А Unreal Engine можно на Blueprint собрать для себя какой-нибудь прототип, и это не потребует много времени, чтобы понять как платформа, движок работает. Также в Unreal Engine используется C++.

Там можно посмотреть, какой движок, что поддерживает и для чего более применим. Например, Unity3D сейчас самый популярный, потому что позволяет делать как 3D игры так и 2D. Он бесплатный но, если какой-то прототип захочется выпускать, то потребуется купить лицензию.

Для запуска проекта в Unity3D потребуется:

  • получить доступ к проекту (через систему контроля версий, dropbox, локальную сеть, etc.)
  • опционально установить Unity Hub, с помощью которого можно поставить одновременно любые версии Unity для разных проектов. Например, у меня стоит несколько версий Unity для разных проектов и через Unity Hub я могу управлять этими версиями. Во вкладке Рroject можем выбирать, с какой версии Unity запускаем проект.

Скачать Unity Hub можно на официальной странице Unity.

Для Unity необходимо создать персональный аккаунт.

Если вы работаете над каким-то коммерческим проектом, то команда проекта должна предоставить лицензию. Если работаете для себя и хотите посмотреть, что и как работает, то следует выбрать персональный аккаунт, он бесплатный.

Через Unity Hub также можно запустить обучающие проекты, где Unity для своих пользователей создает туториалы, проекты, которые можно самому создать. Также здесь создаются и платформеры, и маленькие игры, где можно посидеть самому и поучиться.

  • версия Unity, на которой девелоперы создают проект.
  • необходимо знать настройки проекта.

Система контроля версий

Система контроля версий — это инструмент, который позволяет команде работать над одним проектом. Это система древовидной структуры, где есть центральная ветка, в которой собираются релизные версии, и от этой ветки каждый делает копию и в этой копии работает, вносит какие-то изменения. Потом изменения вливаются в основную ветку, после того как в копии сделаны все изменения, и эта копия протестирована.

  • Система контроля версий
  • Веб-сервисы GitHub, GitLab
  • Для любых типов файлов
  • Можно как из командной строки, так и спец. инструментами
  • Основные команды: add, commit, push, pull, checkout, reset и т.д.
  • Ссылка на git book (есть русский язык)

Git book — самый популярный сервис, где доступно объяснено в примерах как git работает.

Для тестировщика самые важные команды – это создание новой ветки, копирование изменений, которые внес разработчик в эту ветку (add, commit, push, checkout, reset и тд.).
Можно работать с Git, как и с командной строки, так и специальными инструментами. Работа инструментами проще.

Запуск проекта в Unity3D

Нажимаем на тот проект, который уже добавлен в Unity Hub. Делаем это по кнопке ADD и выбираем папку, которая предоставлена от команды разработчиков. После того как мы открыли проект Unity, он довольно долгое время подгружает скрипты и собирает проект воедино.

Узнаём настройки проекта от разработчиков. Здесь есть в меню файл – Вuild Settings. У каждой команды могут быть разные настройки. Мы переключаемся на платформу Аndroid.

После того как загрузился проект, открываем сцену. В интерфейсе Unity есть главное окошечко с игрой непосредственно.

Мы можем переключиться на сцену, походить по сцене, посмотреть, что находится на сцене. Видим главный экран. Можем повертеть его с разных сторон, посмотреть. Также есть поле с иерархии проекта, область со всем содержимым проекта, инспектор, который открывается после того как мы в иерархии выбрали какой-то из компонентов. В инспекторе разработчики настраивают полностью проект. После того как проект открылся, мы выбираем сцену и запускаем проект.

Есть главный персонаж.
Есть buster, который увеличивает жизнь.
Есть buster, который увеличивает количество шагов. Шаги преобразовались в энергию.
Есть враги.
Есть цель – другой кролик.

Перемещаясь стрелками на клавиатуре, мы можем до цели своей дойти.

Когда мы перемещаемся с клетки на клетку, у нас отнимается количество шагов, которые в данном случае преобразовались в энергию и попадая на врага, снимается жизнь, и отнимается один шаг, который преобразовался в энергию.

Достигнув цели, мы переходим к следующему уровню.
Случайным образом генерируются бустеры, враги, и где находится цель.
Если необходимо развернуть игру на весь экран, есть настройка maximize on play.

Проверим в Unity скрипты, которые мы записали вчера в чек-лист.

То, что мы не смогли проверить в Unity, можно проверить непосредственно на эмуляторе.

Также в Unity можно вылавливать специальные ошибки, которые не относятся к процессу игровых механик, или геймплея, а связанные с кодом, со скриптами. Например, разработчик забыл привязать скрипт к полю с финальным результатам от игрока, где пишется, сколько игрок заработал баллов, пока не проиграл.

Запускаем игру. Пройдем несколько уровней и на этом уровне проиграем.

Здесь в поле с баллами на экране пишется какое-то значение, которое не соответствует тому сколько игрок заработал проходя игру.

В консоле, как раз это то место, где игровой движок Unity3D репортит об ошибках.

У нас выпала ошибка:

Помимо ошибок в Unity есть просто информационные сообщения.

Конкретно в нашем случае получилось так, что разработчик просто забыл к полю привязать скрипт, который обрабатывает и выводит на экран сколько игрок получил баллов, проходя уровни. Перезагрузив игру, нажмем на клавишу передвижение, и с главным героем ничего не происходит, он остается на месте. То есть намертво игра зависла. Это может привести к проблемам.

Очень важный момент — настройки проекта в Unity3D. Должны быть выбраны именно те настройки для проекта, которые используют разработчики при создании.

Красной рамкой выделены те настройки, которые используются, если build собирается под android платформы. Обязательно эти две настройки нужно указать при установке той версии Unity, которые вы будете использовать для проверки проекта.

Преимущества тестирования проекта в Unity:

  1. Можно тестировать сразу после внесения изменений.
  2. Можно быстро переключать разные версии.
  3. Можно не ждать новой сборки и самому сбилдить нужную версию под платформу.

Недостатки тестирования проекта в Unity:

  1. Не весь функционал корректно тестировать в движке (например, рекламу и покупки внутриигровые лучше тестировать на устройствах).
  2. Есть риск пропуска бага, так как некоторые баги воспроизводятся только на определённых устройствах, при определенных действиях пользователей. Например, когда игрок зажимает в нескольких местах экран.

Если вы будете тестировать на Unity, то нужно набраться терпения, потому что Unity очень часто долго собирает проект, долго переключается с ветки на ветку, долго подгружает скрипты, и нужен хороший компьютер, который будет все эти ситуации обрабатывать.

Эмулятор Аndroid

Создадим одно тестовое устройство через android studio:

  • устанавливаем себе android studio на компьютер;
  • создаем любой пустой проект.

У вас открывается рабочее пространство.

  • во вкладке инструменты есть раздел Android Device Manager, открываем его.

У меня уже создано несколько виртуальных устройств.

  • нажимаем Create Virtual Device;
  • выбираем любое устройство с которым вам хочется работать.

Смотрим по размеру экрана, по наличию google-сервисов на этом эмулируемом устройстве.

таким значком обозначены те устройства, которые будут с google- сервисами.

Выбираем, например, пиксель 4. Нажимаем next, и нам предлагается выбрать ту операционную систему, с помощью которой мы запустим наше устройство.

Выберем, например, 10 android.

Это те настройки, которые будут у нашего устройства.
Можем задать в какой ориентации создать устройство.
Можем выбрать в расширенных настройках сколько задать памяти устройству.
Какую задать сеть устройству.
Можно задать имя.
Финализировать всю настройку.

После того, как устройство создано, мы его можем запустить.

Здесь есть несколько настроек, которые можно применять для этого устройства. Включаем кнопкой «включить», и появляется полностью смоделированное устройство.

Пройдемся по настройкам, которые можно указать, воссоздав тестовое устройство.

Мы можем выбрать локацию, с который как будто бы мы находимся с этим устройством. Можно выбрать настройки дисплея, настройки сети, можно сэмулировать, что устройство у нас садится и состояние аккумулятора устройства.
Можно задать камеру.
Можно эмулировать, как будто кто-то звонит, пишет смс на устройство. И другие настройки, которые здесь есть. Чаще всего это: настройки по сети, по батарее, по эмуляции по звонкам. Также есть функционал, который позволит делать запись с экрана, если мы наткнулись на какой-то баг и хотим его записать.
Можно поворачивать устройство.
Можно делать погромче, либо выключать звук на устройстве.
Есть кнопки, которые эмулируют системные кнопки android.

Мы можем загрузить и запустить .apk созданные в Unity в тестовом устройстве и посмотреть как это будет выглядеть.

На клавиатуре и движением мыши мы можем перемещать главного героя.

Чем ещё хорошо тестировать именно с помощью Аndroid studio и Аndroid Virtual Device: в Аndroid studio встроен инструмент, который позволит видеть логи с нашего устройства.

В locket, который находится внизу, инструмент android studio, мы можем видеть все логи, которые идут с нашего приложения.

В поле вводим Unity, чтобы получить фильтрацию в поле поиска.

Давайте смоделируем ошибку: у нас программист забыл прикрепить какой-то скрипт к компоненту.

Устанавливаю на устройство. Запускаем. Чистим логи, ждём запуска.

Парочку уровней пройдём и проиграем.

Видим нашу ошибку.

Можно спокойно перемещаться по логам, смотреть что произошло и что происходило, и при желании копировать и сохранять в чат. Пересылать разработчику.

Пробуем. Ничего не происходит, игра зависла.

Еще одно преимущество эмулятора в android студии: когда вы выключаете ваше устройство, оно сохраняет состояние, которое было до выключения, и все установленные настройки, установленные программы сохраняются.

Здесь видно все наши устройства и сколько они занимают места.

Преимущества тестирования в android studio

  • наличие Googlе-сервисов;
  • можно тестировать на устройствах с разными разрешениями экрана, размером оперативной памяти, уровнем сигнала мобильной сети и т.п.;
  • можно сохранять тестовое окружение.

Недостатки тестирования в android studio

  • ограниченный парк устройств (нет ios-устройств). Здесь мы видим только пиксели, nexus. Также можно протестировать приложение для часов, для планшетов, автомобилей, и телевизоров. Можно настроить свой профиль, со своими разрешениями экрана. Здесь мы видим только те, устройства, которые установлены непосредственно на чистом андроиде. Также нельзя протестировать внутриигровые покупки на android studio, так как это не настоящее устройство, и там нет такого функционала.

Вопрос: есть ли что-то подобное для ios на windows?

Ответ: есть инструмент, но к сожалению, он не на windows, а на mac os. То есть с помощью Х-кода можно симулировать устройство под операционной системой от apple. Они, возможно, существуют, но мы вышли из этого положения тем, что закупили несколько устройств и тестировали именно на этих устройствах.

Эмуляторы и симуляторы мобильных устройств на ПК

Чаще всего они эмулируют именно android устройства и первоначально разрабатывались не для того, чтобы этим инструментом пользовались разработчики или тестировщики, а для людей, которые хотят играть в мобильные игры, но не хотят это делать на мобильных устройствах, телефонах или планшетах. Поэтому были созданы такие платформы как: ВlueStacks, Nox, всевозможные эмуляторы, которые позволяют запускать мобильные игры на ПК.

Посмотрим, как запустить игру на ВlueStacks.

Можете попробовать любой из этих эмуляторов, которые представлены.

Основная претензия к этим сервисам в том, что они нестабильны. Например, ВlueStacks в процессе тестирования очень часто вылетал.

Вы можете поставить через этот сервис игру, в которую вы играете на мобильном устройстве, и посмотреть какая разница между тем, что вы видите в мобильном устройстве, и что происходит непосредственно в этом эмуляторе.

Запустим игру, которую мы тестировали с вами сегодня. Происходит это точно так же, как мы делали в android studio просто перетаскиванием APK версии на главный экран эмулятора. Здесь у ВlueStacks есть доступ к google play. Там вы можете залогиниться под своим аккаунтом и скачивать любую игру, которую вы хотите протестировать. Нажимаете установить — происходит загрузка. Игра появится у вас на главном экране ВlueStacks.

Когда мы запускаем нашу игру с зайцами и волками, запускается все то же самое, что мы уже видели и в Unity3D, и в Аndroid эмуляторе. Точно также мы можем либо свайпом перемещать главного героя по карте, либо с помощью клавиш клавиатуры.

Это версия, где бага со скриптом нет.

ВlueStacks также позволяет смотреть логи с той игры, которую мы хотим протестировать.

Установим версию с багом. Запустим ее.

Мы уже заранее скачали инструмент android debug bridge. Доступ к нему возможен через консоль.

Здесь можно подключиться к тому устройству, которое у нас сейчас запущено в ВlueStacks.

Набираем ADB можно без .exe, без расширения. Затем набираем Device.

Набираем такую команду:

Пишем фильтр по Unity.

Теперь мы видим все логи, которые у нас идут с нашего приложения, которые запущены в эмуляторе.

Пройдём несколько уровней, и проиграем. Опять же, ищем наш exception.

Та же ошибка, которую сегодня с вами ловили в Unity и в Аndroid studio.

Выставили фильтр по Unity, чтобы нам не слались все события, которые шлются с устройства. Нажмем Restart. И также ничего не работает. Удалим эту версию.

Установлю другую версию, чтобы продемонстрировать ошибки, которые нам нужно отслеживать тестируя вручную, конкретно в этой версии игры.

У нас есть требование, что когда мы попадаем на ячейку с врагом, то количество жизней отнимается. Проверяем: захожу на ячейку с врагом и количество жизни прибавилось. Такое встречается, когда есть какие-то инкрементирующие, либо наоборот механики в игре, то в этом случае есть большая вероятность, что разработчики сделают что-то не так. Возможно где-то значение, которое должно увеличивать уменьшает. Это очень часто происходит с наградой. Например, если игрок выполнив какое-то действие, заработал 100 монет — эти 100 монет могли не начислится на его счётчик и игрок будет не доволен и будет писать в тех. поддержку.

Переходим снова на ячейку с врагом. Уже не 4, а 5 жизней, хотя по ГДД должно отниматься значение.

Такие проверки очень легко проверяются и в Аndroid studio и в ВlueStacks.

Для практики вы можете поставить любую игру с google play, попробовать её запустить, и посмотреть, как она будет играть у вас в эмуляторе, и произойдут ли какие-то ошибки, которые не были предвидены.

Вы можете посмотреть как игра будет взаимодействовать в этом эмуляторе, все ли действия, которые вы можете произвести на мобильном устройстве, вы можете повторить в этом эмуляторе.

В эмуляторе есть несколько настроек. Вы можете взаимодействовать с громкостью, показывать/либо не показывать курсор. Можете выбрать то устройство, на котором вы хотите протестировать. Также можете зайти в настройки, посмотреть какие устройства есть, посмотреть характеристики разрешения экрана. Есть настройки по разрешению экрана, движки, можно поставить разную частоту кадров.

Преимущества эмуляторов и симуляторов мобильных устройств на ПК

  1. Большой выбор, как по цене, так и по качеству.
  2. Большой парк устройств.
  3. Широкий инструментарий: можно тестировать в разными разрешениями экрана, размером оперативной памяти, уровнем сигнала мобильной сети и т.п.
  4. Можно сохранять тестовое окружение.

Недостатки эмуляторов и симуляторов мобильных устройств на ПК

  1. Баги, связанные с эмулятором, а не с тестируемым приложением
  2. Нельзя имитировать работу при различном состоянии мобильной сети и аккумулятора, работу камеры мобильного устройства и т.п.

Сейчас у apple на ios появились новые устройства с новыми процессорами и там уже есть игры для мобильных устройств, которые можно запустить и тестировать непосредственно на macbook. Это очень удобно.

  • Unity Learning (или любые бесплатные туториалы по Unity3D на youtube)
  • Unity Documentation
  • Ссылка для скачивания UnityHub
  • Ссылка на справку об установке Android environment setup (для того, чтобы билдить на Android)
  • Ссылка на справку по NullReferenceException
  • Android Virtual Device (AVD)
  • Android Debug Bridge (ADB)
  • Блог BlueStacks
  • Running Your App in the Simulator or on a Device (Xcode)

Тестирование на Android

В Unity можно тестировать Android-приложения сразу на телефоне через режим отладки, как в Android Studio?

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Android тестирование
Здравствуйте. Помогите создать приложение тестирование на Android устройстве. Как можно реализовать.

Тестирование Android приложений
Доброго времени суток! Нужно написать тест для автоматизации Android приложения использую Selenium.

Тестирование Android приложения
Здравствуйте! Мне нужно выполнить следующее задание: 1) Установить на андроид аппарат приложение.

Тестирование Android. Переход по ссылке
Требуется в тестах проверить переход по ссылкам. Проблема в том, что при нажатии на девайсе при.

3339 / 1761 / 1019
Регистрация: 26.10.2018
Сообщений: 5,174

Лучший ответ

Сообщение было отмечено solidius как решение

Решение

56 / 36 / 20
Регистрация: 27.08.2015
Сообщений: 241

только запускается и работает у всех по разному. У меня например настраиваш все как видео, потом закрываешь юньку, затем подключаешь телефон к компу, запускаешь на телефоне Unity Remot 5, а потом запускаешь юньку. У некоторых подключить телефон, запустить юньку, а только потом Unity Remoе 5, в общем шамань, все работает.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Тестирование игры для Android на ошибки
кто желает получить игру даром в обмен на посмотреть есть ли ошибки жанр — интерактивная книга.

Unit -тестирование или автоматизированное тестирование
Доброго времени суток. Я программирую «для себя» второй год, на выходе получаются разного рода.

Удаленное тестирование приложение/Пересылка на тестирование
Если кто-то написал приложение под андроид и захочет показать другому человеку, то достаточно.

Тестирование (или Юнит тестирование)
Доброго времени суток, возник такой вопрос, раньше встречался на фронтенде с js тестированием.

Android Studio, импорт не видит в проекте import android.annotation.AttrRes? — Android
Android Studio не видит классы из пэкэджа android, хотя он есть. На скрине видно, открыт класс.

Тести́рование програ́ммного обеспе́чения(Модульное тестирование, или юнит-тестирование)
Извиняюсь перед администрацией что разместил тему в несоответствующем разделе, не мог найти про.

Управление в Android играх на Unity

Unity славен возможностью создавать игры кроссплатформенно. Это действительно круто взять и сделать свою игру и на ПК и на телефон, да еще чтобы и в браузере поиграть. И если с браузером и ПК всё понятно, то у новичков случается ступор при взгляде на сенсорный экран. Там же кнопок нет! И мышки. Цель этого туториала – научить вас работать с сенсорным экраном и создавать разные варианты управления: управление одним касанием, несколькими (телефоны же поддерживают мультитач), а также рассмотрим акселерометр и как считывать с него данные.

Итак, новичок проходит туториалы, переписывает код и всё работает. Персонаж реагирует на клавиатуру, следит за курсором мышки и даже стреляет не промахиваясь – туда куда указал прицел, который привязан к курсору.

Но когда доходит до создания игры под мобильные устройства, эти все способы программирования не подходят. Input.GetAxis тут не работает. Начнем разбираться как это чинить.

Платформенно зависимая компиляция

Вот хочу создать игру, управлять которой можно и в самом редакторе и на телефоне. Это что же, писать дополнительные скрипты и вешать их на каждый управляемый объект?! Звучит страшно. По счастью, красота кроссплатформенности Unity заключается в том что существуют способы определить с какого девайса идет управление и в зависимости от этого решать как будет идти обработка управления. Такая вещь называется платформенно зависимая компиляция. Она представляет собой директивы препроцессора. Задача этих директив – указать, какие участки кода должны выполняться в зависимости от того, с какой платформы работает приложение. Unity предоставляет инструменты как для определения платформ так и для определения версий с которых запускается код.

Мы рассмотрим те пункты, которые непосредственно касаются темы сенсорного управления игрой, а любопытные могут посмотреть остальные варианты в официальной документации Unity. Итак, прежде чем приступать к написанию кода контроллера для мобильных устройств, нужно предусмотреть необходимость проверки игры в редакторе.

Важными директивами есть следующие:

  • UNITY_STANDALONE – добавляется для части скриптов, которые выполняются при запуске игры из системы Windows или Linux, или Mac OS X.
  • UNITY_WEBGL – работа с WebGL
  • UNITY_IOS – будет исполняться код для iOS платформы
  • UNITY_ANDROID – директива для платформы Android

Это список самых часто используемых. Есть и другие, методы работы с ними такие же.

Итак, как работать с этими директивами препроцессора и платформенно зависимой компиляцией? Синтаксис директив следующий.

#if – директива указывает условие при котором будет выполняться следующая часть кода. Если есть директива #if , то должна быть и соответствующая закрывающая директива #endif, которая обозначает границу компилируемой части.

Также существует директива #elif, которую можно воспринимать как else if. Работает схожим образом. Также отдельно существует директива #else, но она обязательно должна идти последней и после нее обязательно указывать #endif. Возможно это выглядит странно и страшно, но на самом деле это работает по принципу условий if – else в привычном программировании. Только тут присутствует не игровая логика, а скорее логика управления кодом. Итак, пример кода с директивами.

Несколько слов о том, где именно использовать эти директивы. Не пишите важный код внутри одной из директив, иначе не скомпилируется. Дело в том, что тот код, который написан внутри условия, допустим UNITY_IOS, никогда не выполнится при запуске в редакторе. Считайте, что вы просто вырезаете из своего исходного кода части – они никогда не выполнятся. И вот если их отсутствие мешает успешной компиляции, то наверняка этим частям кода не место внутри директивы. Итак, если это понятно, то самое время двигаться вперед к управлению с телефона!

Управление с touchscreen

Природа этого элемента управления несколько иная от клавиатуры и мышки. Скрипты стоит писать с учетом особенностей тачскринов. Поскольку на тачскрине можно зарегистрировать не один, а несколько касаний, то в памяти сохраняется массив, в котором записана информация о каждом касании. В Unity Scripting API за это отвечает класс Input – такой же как и при регистрации ввода с клавиатуры и мыши, однако методы другие.

Основы

Итак, рассмотрим такой сценарий – необходимо зарегистрировать касание одним пальцем на экране. Сначала посмотрим, как узнать позицию касания, а потом – как зарегистрировать касание по игровому объекту. Приступим.

Помним, что информация о касании записывается в массив. Даже если касание было одно, то у нас всё равно есть массив хоть и состоящий из одного элемента. Тут будет продемонстрирована одна из хороших практик при работе с API. Написание кода таким образом делает его максимально безопасным и читаемым.

Алгоритм состоит из следующий частей:

  1. Зарегистрировать хотя бы одно касание
  2. Сохранить интересующий нас элемент массива
  3. Получить фазу касания экрана и что-то сделать.

И не забываем про директивы и платформенно зависимую компиляцию. Это первое что мы сделаем в коде.

Внутри этой директивы мы имеем право описать управление. Первое – удостовериться,что касание произошло. Input записывает количество касаний в Input.touchCount.


Второе – получить первое в списке касание.Существует объект Touch, который содержит всю информацию об единичном касании. Чтобы получить нужную информацию используем метод Input.GetTouch(). Этот метод принимает как аргумент любое целое число – оно и будет показывать индекс искомого элемента в массиве. Про массивы и то как с ними работать можно найти в любом учебнике по с#. Внутри предыдущего условия пишем:

Отлично, мы получили информацию о касании и сохранили её в переменную. Что мы можем извлечь из этого.

Любые сенсорные экраны могут регистрировать разные данные: фаза касания (начало, движение, окончание), позицию на экране и количество быстрых касаний, а также информацию о поведении (траектория движения и подобное). В примерах будет использоваться имя переменной, которую мы создали в предыдущем этапе, а именно myTouchтипа Touch.

Естественно имя переменной вы можете задавать сами.

  1. Фаза касания: их существует несколько. Найти их можно в свойстве myTouch.phase объекта Touch. Представляют собой перечисление TouchPhase. Варианты такие:
    1. Began – произошло начало касания
    2. Moved – пользователь водит пальцем по экрану
    3. Stationary – пользователь касается экрана, но не меняет положения касания
    4. Ended – касание прекратилось
    5. Canceled – система не может считать касание(например пользователь касается ладонью и невозможно определить количество контактов)

    Пример 1. Получение координат точки на экране, куда пользователь указал в игре.

    Тут просто выводится в консоль значение позиции на экране. Позиция на экране задается через Vector2. Однако в консоль будет выводится несколько сообщений, так как одно касание может длиться несколько кадров (мы пишем это в Update). Если нужна только точка в момент касания, то обращаемся к фазам касания. Код будет выглядеть так:

    Появилось только условие (выделено желтым).

    Пример 2. Касание по объекту на экране. Тут будет использован Raycast.

    Направление движения

    С основами разобрались, теперь более сложные задачи, которые задаются разработчикам. Одна из таких задач – определение направления, куда пользователь провёл пальцем. Направление будем определять с помощью векторов, а именно – нормализации вектора. В разделе Основы упоминалось о свойстве deltaPosition. Его и будем использовать. Для примера представлен скрипт, который заставляет объект двигаться в заданном направлении бесконечно (или до изменения инструкций)

    Мультитач

    Для работы с несколькими точками касания на экране необходимо вспомнить про циклы. Помним, что каждый момент касания фиксируется в массиве, а значит, если пройти по всему массиву циклом, то можно получить информацию о каждом касании. В остальном работа не отличается от касания одним пальцем.
    Input.touchCount – это количество элементов в массиве. Получение объекта по индексу – myTouches[i]. И с этой конструкцией можно работать также как в предыдущем разделе мы работали с элементами Touch.

    Акселерометр

    Мобильные устройства позволяют считывать свое положение в трехмерном пространстве. В Unity для этого существуют методы. Прежде всего нужно разобраться с осями. Если вы возьмете телефон в руки и разместите его вертикально (портретная ориентация), то ось Y будет указывать вверх-вниз, ось X в стороны, а Z будет показывать глубину. Работа с акселерометром на самом деле более чем простая. За это отвечает Input.acceleration, который работает почти также как Input.GetAxis.

    Рассмотрим пример. Заставим объект будет двигаться туда, куда наклонено устройство.

    Бонус

    Небольшой совет о том, как проверять работу приложений. Естественно проверить корректность работы своей системы управления можно только на устройстве. И что же, всё время билдить миллионы версий игры и проверять работу? По счастью, нет, не нужно. Команда Unity позаботилась о своих пользователях выпустив приложение Unity Remote.

    На сайте очень хорошо описано как устанавливать и настраивать, но есть пара советов. Первое, не забудьте перевести свой телефон в режим разработчика. Второе, при подключении к компьютеру выберите пункт касающийся передачи файлов. И третье, если вы всё сделали как сказано на сайте и ничего не забыли, но у вас не работает – перезагрузите Unity, не отключая телефон от компьютера.

    Надеемся, эти советы помогут вам создать свою первую игру под сенсорные экраны и позволит проявить всю свою креативность.

    Андроид-игры на UNITY3D

    С каждым днём всё более популярным становится такое направление, как самостоятельная разработка компьютерных игр. Используя межплатформенную среду разработки компьютерных игр Unity 3d, можно создавать онлайн уникальные игры интересующего жанра для платформ Android, Windows, iOS, Blackberry, Wii, Xbox, Playstation. Широкое признание Unity3d завоевал среди желающих создать игру для «Андроид» самостоятельно. Этот конструктор имеет игровой движок, максимально реализующий возможности OpenGL и DirectX, а также содержит редакторы 3D-моделей и другие полезные программы для настройки звуков, ландшафтов, шейдеров и прочих компонентов.

    Единственная сложность, с которой может столкнуться малоопытный в программировании пользователь – это необходимость написания программного кода. Но это не проблема, поскольку UNITY3DSCHOOL научит, как быстро и просто справиться с этой задачей. Особенно если вы горите идеей создать игру для «Андроид» и стать автором уникального программного продукта. Авторские методики обучения разработке игр позволят превратить компьютерное хобби в прибыльное занятие, приносящее хороший дополнительный доход.

    А есть ли у вас план?

    Если вы решили попробовать свои силы в качестве разработчика игры, UNITY3DSCHOOL рекомендует придерживаться следующего незамысловатого плана действий.

    1. Концепция. Прежде всего необходимо детально проработать саму идею, тогда будет понятно, в каком направлении двигаться дальше.
    2. Дизайн-проект или создание наброска. Это фактически техническое задание, план того, как создать игру для «Андроид» пошагово.
    3. Изучение особенностей UNITY и её возможностей для понимания, насколько она сможет раскрыть потенциал будущей игры.
    4. Моделирование игры онлайн в конструкторе. Пожалуй, самый увлекательный и творческий этап разработки игры. Здесь можно много экспериментировать, подбирая наиболее подходящие компоненты.
    5. Когда концепция реализована, не лишним будет протестировать свой продукт и оценить все ли части дизайн-проекта реализованы.

    Вперёд, к покорению виртуальных просторов!

    Теперь можно подумать о том, чтобы запустить игру онлайн, например в Play Store.

    Разработка компьютерных игр — увлекательное занятие. Наши курсы помогут вам реализовать вашу идею в максимально короткий срок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *