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

Уроки Unity

Автор Easyskanker, декабря 26, 2018, 18:53

0 Пользователи и 1 гость просматривают эту тему.

Easyskanker

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

Easyskanker

Дело №1. Как экспортировать под андроид с Unity 2018.

1. Гуглим Android JDK - https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html, устанавливаем в program files/java 

2. Гуглим Android NDK - https://developer.android.com/ndk/, распаковываем тоже в папку java 

3. Гуглим Android SDK - https://developer.android.com/studio/#downloads, создаем папку android на каком-нибудь наиболее свободном "диске", запускаем скачанный экзешник и ставим в эту папку, то есть у вас в папке android создастся папка android studio 

4. Идем в папку android, в android studio/bin, запускаем файл studio64.exe если у нас операционка 64-разрядная или studio.exe если 32-разрядная

5. Создаем в папке android, куда устанавливали Android Studio, папку SDK, устанавливаем SDK в эту папку

6. Открываем Юнити, создаем пустой проект

7. Edit >> Preferences >> External Tools, браузим пути для SDK, JDK и NDK

8. File >> Build Settings, выбираем платформу android, жмем switch platform.

9. В той же вкладке жмем player settings

10. В player settings меняем Company name на название своей организации, Product name на название своего приложения, выбираем картинку для default icon

11. Листаем ниже, в Other settings, в Identification меняем в Package name названия на название своей организации и своего приложения

12. Задерживаем дыхание и жмем Build в File >> Build Settings

13. Если проект забилдился без ошибок, и забилдился в принципе, значит своенравная богиня Юнити милосердна к вам. Но подождите праздновать, сначала закачайте полученный apk на свой гаджет, попытайтесь установить, открыть (если что, там где-то в настройках надо поставить галочку для разрешения подозрительных приложений, или как-то так, на разных "андроидах" эта настройка спрятана в разных местах и названа по-разному)

14. Если созданное вами приложение открылось, и открылось корректно, крикните "УРА", позовите гостей, откройте шампанское и закатите банкет. Если нет, значит разрабы Юнити и/или Андроид опять что-то поменяли и вам необходимо искать более свежее руководство.

Karakurt

Цитата: Easyskanker от декабря 26, 2018, 18:56
4. Идем в эту папку, в android studio/bin, запускаем файл studio64.exe если у нас операционка 64-разрядная или studio.exe если 32-разрядная
Зачем запускать студию? (про установку не писали)
Цитата: Easyskanker от декабря 26, 2018, 18:56
6. Открываем Юнити, создаем пустой проект
Т.е. сначала устанавливаем?
Цитата: Easyskanker от декабря 26, 2018, 18:56
7. Edit >> Preferences >> External Tools, браузим пути для SDK, JDK и NDK
Нету.

Easyskanker

Цитата: Karakurt от декабря 26, 2018, 20:16
про установку не писали
Не заметил. Сейчас поправлю.

Цитата: Karakurt от декабря 26, 2018, 20:16
Зачем запускать студию?
Чтобы
Цитата: Easyskanker от декабря 26, 2018, 18:56
устанавливаем SDK

Цитата: Karakurt от декабря 26, 2018, 20:16
Т.е. сначала устанавливаем?
Подразумевается, что Юнити у вас уже установлена. Как бы
Цитата: Easyskanker от декабря 26, 2018, 18:53
Пишу главным образом для себя
, поэтому нулевой урок решил не составлять.

Цитата: Karakurt от декабря 26, 2018, 20:16
Нету.
А вы выполнили пункт
Цитата: Easyskanker от декабря 26, 2018, 18:56
6. Открываем Юнити, создаем пустой проект
?

Easyskanker

Дело №2. GPS-location

1. В ассетах создаем C#-скрипт, называем его Gpslocation
2. Создаем Canvas >> Text, Width и Height делаем по 400, чтобы всё поместилось, выравнивание по центру, размер шрифта 25
3. Открываем скрипт в Visual Studo либо в MonoDevelop, как вам удобнее
4. Кнтрл+а, копипастим с заменой вот такой код:


longitude - долгота, latitude - широта, вот их определяем и выводим в text, \n перед lon нужна нам, чтобы перенести строку.

5. Билдим проект под андроид, устанавливаем полученный apk на гаджет, открываем и видим свои координаты.

Bhudh

Цитата: Easyskanker от декабря 27, 2018, 16:52устанавливаем полученный apk на гаджет, даём ему разрешение на доступ к геолокации, открываем
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Easyskanker

У меня при установке запрос на разрешение доступа к интернету и к GPS вылез, на автомате "окей" нажал. Ну так-то да, само собой разумеется.

Easyskanker

Unity позиционируют как движок, на котором можно создавать игры, не зная программирования. Это верно только в том случае, если вы будете тупо покупать платные ассеты в Юнити-стор пачками и тупо лепить их друг к другу, получая примерно то же, что вы могли получить в начале десятых в 3D Game Maker (ныне Cyberix3D, кажется). Иначе это очередная маркетинговая чушь: вам понадобится знать даже в два раза больше, чем язык программирования, потому что надо также знать приемы и закидоны Юнити, а потом еще их переучивать, когда поменяются с обновлениями или добавятся новые. В общем, в этом посте буду постепенно накапливать ссылки на учебные материалы по C#, по которым начинаю обучаться, и начинаю я с самых азов.

https://download.microsoft.com/documents/rus/msdn/c_sharp2.pdf - Мартин Дрейер "C# для школьников"

Easyskanker

Дело №3. Туман

Порядок конечно удивительный, но это тот порядок, в котором у меня возникает потребность в какой-либо фиче :)

В общем, так:
1. Ищем нашу камеру, в пустой сцене вы просто выбираете камеру в списке объектов, но у меня FPScontroller, поэтому выбираю FirstPersonCharacter в этом FPScontroller и смотрю на раздел Camera в Inspector, то есть в свойствах объекта.

Spoiler: осторожно, png! ⇓⇓⇓

В разделе Camera у нас есть поле clear flags, по дефолту в нем стоит значение skybox, то есть рендерится "небо", можно также выставить значение depth only или don't clear, чтобы почувствовать себя художником-абстракционистом, но нам нужно значение solid color. В выплывшем поле background выбираем цвет, если вы делаете туман как туман, то выберите какой-нибудь серенький, но я делаю туман как темноту (у меня на объектах шейдер unlit/texture, такие дела), поэтому цвет выберу черный.

2. Теперь в главном меню, то есть где file, edit и прочая лабуда, выбираем windows >> rendering >> lighting settings. В открывшемся окошке идем вниз, находим раздел other settings, в нем ставим галочку на fog. Color сделаю черный, mode - linear, чтобы больше походило на темноту, start 2, end 12. Вы конечно же выставляете все эти значения под себя, подбираете такие, как вам надо. Готово. Для удобства окошко ligthing settings можно перетащить к inscpector, потянув за шапку:

Spoiler: осторожно, png! ⇓⇓⇓

Easyskanker

Пожалуй лучше все-таки вместо слова "урок" использовать слово "дело", ближе по смыслу.

Easyskanker


Easyskanker

Дело №4. Экспорт модели с анимацией из DAZ в Unity.


DAZ:

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


-- Во вкладке Scene (по умолчанию это на панели справа) нажмите ПКМ по персонажу -> Select -> Select All, чтобы выбрать персонажа со всеми его деталями.


-- Нажмите ПКМ на маленьком черном треугольничке (он над левом верхним углом всплывшего меню на скрине), выберите Bake to Studio Keyframes.


-- File -> Export, выберите формат fbx. В Output Options выберите "FBX 2014" и расставьте галочки как на скрине. Нажмите Accept.



Unity:

-- Создайте проект в Unity, в Assets создайте папку для модели. В проводнике Windows откройте папку, куда экспортировалась модель, перетащите мышкой содержимое в созданную нами папку в Assets.

-- В свойствах модели перейдите в раздел Materials и выставьте следующие настройки, нажмите Apply.


-- Для удобства создайте плоскость (GameObject -> 3D Object -> Plane). Перетащите мышкой модель на плоскость прямо из созданной нами папки.

-- Вы заметите, что глаза, ресницы и волосы модели накрылись медным тазом. Это легко исправить.
В созданной нами папке будет папка Materials, откройте ее. В свойствах материала Eyemoisture выберите Shader -> Legacy Shaders -> Transparent -> Diffuse, выберите текстуру Checkmark. Для материала Cornea то же самое (у модели второго поколения, Genesis 2, вместо этих материалов будут EyeReflection, Cornea и Tear). В свойствах материалов для глаз, ресниц и волос выбирайте Rendering Mode -> Fade, пока результат вас не устроит. Для материала Eyelashes бегунок Metallic можно выкрутить на максимум, до единицы.

-- В созданной нами папке нажмите ПКМ, Create -> Animator Controller.

-- Выберите модель непосредственно в сцене. Перетащите Animator Controller мышкой в свойства объекта, вкладка Animator, параметр Controller, вот в этот параметр.

-- Зайдите в Window -> Animation -> Animator. Перетащите модель персонажа из созданной нами папки в открывшуюся вкладку.


-- Теперь можете запустить игру и посмотреть, как работают анимации.

Easyskanker

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

Посмотрел. Третье и восьмое поколения лучше не использовать. Со вторым поколением всё идеально, рекомендую использовать только его.

Проблема я так понял в морфах. Без морфов G3 и G8 более-менее адекватно себя ведут, не разлетаются в лапшу, как с морфами, но все равно возникают какие-то левые кадры.

Easyskanker

Итак, без морфов G3/G8 корректно импортируются, с анимацией, одеждой, волосами, формами, со всем, что нужно, надо только в Unity во вкладке Rig у модели выбрать тип анимации "humanoid", ну и при экспорте из DAZ снять галочку с морфов, конечно.

Попробовал импортировать модель из iClone 7, всё отлично импортируется, анимации и материалы корректны. Опять же без морфов, они тут по-моему вообще не предусмотрены (хотя iClone 7 мне еще долго курить, буквально вчера установил впервые).

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

Easyskanker

При экспорте из 3ds Max (в формат fbx, конечно же) очень важно поставить галочку "Embed Media", чтобы не отвалились текстуры.



Затем, после импорта модели в Unity, в свойствах модели перейдите в раздел Materials и выставьте следующие настройки, нажмите Apply.


Easyskanker

Чтобы на объекте была текстура с прозрачностью (например, когда делаете сетчатый забор) перетащите на объект текстуру, имеющую альфа-канал (.png/.dds/.tga/.tiff), и в свойствах объекта во вкладке Mesh Renderer в параметре Shader выберите Legacy Shaders->Transparent->Diffuse:


Easyskanker

Character Controller для управления от третьего или первого лица:

https://docs.unity3d.com/ru/current/Manual/class-CharacterController.html

Актуальный ресурс с туторами: http://pyzh.pp.ua/
Сайт бесплатных 3д-моделей и анимаций: https://www.mixamo.com/#/?limit=24&page=1&type=Motion%2CMotionPack
Туториал по FPS Survival Game: https://www.youtube.com/watch?v=CTWvAwSw98Q

https://www.youtube.com/watch?v=6rDlfYC4HxM - определение ближайшего объекта.

https://assetstore.unity.com/packages/templates/systems/full-body-fps-controller-134060 - ассет fps/tps.
https://www.youtube.com/channel/UCJMf2I-etK8yvXhSZM4olWg - другие ассеты того же автора.

https://www.youtube.com/watch?v=J1GgvDfmIo0&t - Third Person Camera System using Cinemachine in Unity.

Easyskanker


Easyskanker

Дело №5. Character Controller.

-- Создаем плоскость, по которой будет перемещаться аватар: GameObject->3D Object->Plane.

-- Создаем капсулу, чтобы имитировать аватар игрока: GameObject->3D Object->Capsule.

-- Переименовываем капсулу в Player.

-- В свойствах капсулы во вкладке Capsule Collider кликаем шестеренку и в выпавшем списке выбираем Remove Component - нам этот компонент здесь не понадобится, так как Character Controller сам проверяет столкновения.

-- Вешаем на капсулу этот контроллер: в главном меню Component->Physics->Character Controller.

-- Character Controller имеет следующие свойства:
Slope Limit: Ограничивает возможность коллайдер взбираться по склонам только по склонам равным или меньше чем указанное значение.
Step Offset: Персонаж переступит на поверхность, только если она ближе к земле, чем заданное значение.
Skin Width: 2 коллайдера могут пересечься друг с другом на глубину, равную значению Skin Width. Большее значение уменьшит степень тряски. Слишком низкое значение может вызвать застревание персонажа. Наилучшим вариантом является установление этого значения равным 10% от радиуса.
Min Move Distance: Если персонаж попробует сдвинуться ниже указанной величины, то он не сдвинется. Это может быть использовано, чтобы уменьшить тряску. В большинстве ситуаций это значение стоит оставить равным нулю(0).
Center: Сдвиг коллайдера в мировом пространстве без влияния на то, как вращается персонаж.
Radius: Значение радиуса коллайдера. По сути дела, это ширина коллайдера.
Height: Высота коллайдера Capsule Collider персонажа. Изменение её растянет коллайдер вдоль оси X в оба направления.

--В ассетах создаем папку Scripts, в этой папке создаем C# Script. Переименуем скрипт в Controller и повесим его на нашу капсулу. Откроем скрипт, дважды кликнув на него. Вставим следующие строки:

-- Добавим на сцену куб, перетащим в инспекторе объектов на Player - это будет "носик" по которому мы будем определять направление аватара.

-- В свойствах Player'a во вкладке скрипта появятся два edit'a: Speed и Rot Speed. Пишем в них обоих значение 5. Это скорость движения и поворотов соответственно.

-- Теперь нажмем Play. Клавиши W и S отвечают за перемещение вперед-назад, стрелки влево-вправо отвечают за поворот в соответствующую сторону.

Easyskanker

Дело №6. Character Controller. TPS.


-- Создаем землю: GameObject -> 3D Object -> Terrain.

-- В свойствах Terrain выбираем кисть Raise or Lower Terrain с формой builtin_brush_8, задаем ей параметры Brush Size = 25 и Opacity = 5, рисуем по краям карты горы.


-- В местах, где вершины слишком острые, используйте кисть Smooth Height с формой builtin_brush_1.

-- Экспортируем из DAZ модель с анимацией ходьбы и анимацией ожидания на месте, создаем для нее папку Models в ассетах и перетаскиваем в эту папку наш fbx (см. Дело №4 "Экспорт модели с анимацией из DAZ в Unity").

-- В папке Models нажмите ПКМ, Create -> Animator Controller.

-- Выберите модель непосредственно в сцене. Перетащите Animator Controller мышкой в свойства объекта, вкладка Animator, параметр Controller, вот в этот параметр.

-- Зайдите в Window -> Animation -> Animator. Перетащите анимацию ходьбы и анимацию ожидания в открывшуюся вкладку.

-- Нажмите ПКМ на анимации ожидания, выберите Make Transition, привяжите к анимации ходьбы. Затем ПКМ на анимации ходьбы, привяжем ее к анимации ожидания.

-- ЛКМ на стрелочке первого нашего транзишна, в Conditions нажмем плюсик, чтобы привязать переменную walk. Снимем галочку с Has Exit Time. Всё то же самое со второй стрелочкой, только там изменим значение walk на false.

-- Слева в Parameters создадим переменную Bool, назовем ее walk.


-- Выделяем в сцене нашу модель, вешаем на нее Character Controller: в главном меню Component -> Physics -> Character Controller.

-- Настраиваем гизмо по размеру модели: ширина по плечам, рост по макушке и стопам.

-- В свойствах модели в разделе Animator выставляем такие параметры (название модели у вас будет другим):


-- В корневой папке ассетов создаем папку Scripts, в ней создаем C# скрипт.

-- Откроем скрипт двойным кликом и вставим следующий код вместо того, который там написан:

-- Перетаскиваем скрипт на модель (в инспектор свойств, между панельками).

-- Подвинем камеру поближе к правому плечу модели, затем перетащим камеру на модель в иерархии объектов, чтобы прикрепить.


-- Теперь запустим, нажав кнопочку Play. Модель должна ходить по нажатию клавиш W и S, поворачиваться по нажатию A и D.

Easyskanker

Полезные советы:

-- В любых полях для ввода чисел можно писать математические выражения со сложением, вычитанием, умножением и делением. Например, вы создали куб с координатой икс 2.03445 и хотите расставить другие кубы с шагом 10 по иксу от него, просто пишете им координату икс как 2.03445+10, 2.03445+20, 2.03445+30 и так далее.

-- Чтобы выровнять камеру по виду окна сцены, нажмите Cntrl+Shift+F или выберите в главном меню
GameObject -> Align With View. Чтобы выровнять вид сцены с видом камеры, в той же менюшке надо выбрать Align View to Selected.

-- Чтобы легче различать режим редактора от режима игры, можно зайти в Edit -> Preferences -> Colors и поменять цвет для Playmode tint, теперь в режиме игры все панели будут менять цвет на выбранный вами. Это удобно, потому что изменения во вкладке сцены не сохраняются, когда запущен режим игры: с меняющимся цветом вы никогда не запутаетесь по случайности.

-- Тем не менее, есть способ сохранять изменения во вкладке сцены, когда запущен режим игры. В свойствах объекта ПКМ -> Copy Component, а когда выйдете из режима игры, в свойствах объекта ПКМ -> Paste Component Values.

-- Чтобы навести камеру на объект, нажмите F, или дважды F в случае, если объект движется — камера будет следовать за ним.

-- Чтобы видеть на сцене объекты, у которых нет модельки, например спаунеры или чекпойнты, нажмите разноцветный кубик в левом верхнем углу в свойствах объекта (вкладка "inspector"). Выпадет список, в котором можно выбрать подходящую иконку. В иконку можно добавить имя объекта.

Easyskanker

Цитата: Easyskanker от декабря 26, 2018, 18:56
Дело №1. Как экспортировать под андроид с Unity 2018.

В этом году упростили процесс. Вместо всех этих действий:

1. Создаем в Юнити новый проект

2. Заходим в нем в File >> Build Settings, выбираем платформу Android. Видим строчку "No Android module loaded" и под ней кнопку "Open Download Page". Жмем эту кнопку, скачивается поддержка платформы Android для Unity. Запускаем скачанный экзешник и все SDK, JDK, NDK устанавливаются сами.

3. File >> Build Settings, выбираем платформу android, жмем switch platform

4. File >> Build Settings, открываем Player Settings

5. В Player Settings меняем Company name на название своей организации, Product name на название своего приложения, выбираем картинку для default icon

6. File >> Build Settings, жмем кнопку Build, чтобы начать компиляцию проекта

7. Полученный apk запускаем на планшете или телефоне, проверяем.

Если полученное приложение выдает ошибку по поводу недостаточной мощности устройства, в Build Setting >> Player Setting >> Player >> Other Settings найдите строчку Auto Graphics API и поставьте галочку. Если приложение тормозит, перед новой компиляцией снимите галочки с уровней качества кроме Low и Very Low (Player Setting >> Quality).

Easyskanker

Дело №7. Unity Remote 5


Unity Remote 5 - приложение для отладки создаваемого вами приложения под Android, так сказать, на лету.

-- Скачиваем на смартфон или планшет приложение Unity Remote 5.

-- Включаем режим разработчика: открываем настройки телефона, вкладка "Об устройстве", далее открываем "Сведения о ПО", тапаем по строчке "Номер сборки" 7 раз. Это колдунство с семикратным нажатием и запускает режим разработчика.

-- Теперь в настройках у вас появится доступ ко вкладке "Параметры разработчика". Идем в нее, находим строчку "Отладка по USB", включаем эту отладку.

-- Открываем приложение Unity Remote 5.

-- Открываем Unity, создаем 2D проект, File >> Build Settings, выбираем платформу Android. В Player Settings >> Editor выбираем Device >> Any Android Device. В Player >> Resolution and Presentation можете выбрать ориентацию экрана: портретную, альбомную или автоповорот.

-- Перетащите из любой папки любую картинку мышкой прямо в окно сцены. Нажмите Play. Если в Unity Remote 5 возникла эта же картинка, вы всё сделали правильно. С такой рилтайм-отладкой вы сэкономите себе десятки часов.

Easyskanker

Дело №8. Импорт SVG


Открываем через главную панель инструментов Window >> Package Manager, в открывшемся окошке нажимаем All Packages, галочку на All Packages:


Отобразятся все пакеты. Все, да не все. Нужный нам плагин запрятан среди устаревших. Жмем Advanced:


В открывшемся списке выбираем Show preview packages:


В теперь уже полном списке находим Vector Graphics:


Жмем в правом нижнем углу окошка кнопку Install, чтобы установить. После того, как плагин установится, можно смело перетаскивать SVG-файлы на сцену и использовать в качестве спрайтов.

Важно:
Сохраняйте в SVG из Illustrator, тогда вектор не будет растрироваться в игре. SVG-файлы, полученные из других программ, например Hexels Marmoset, растрируются. Здесь всё зависит от формата самого SVG.

Есть такой минус: SVG в Unity не анимируется, будь то собственная анимация SVG или окно Animation в Unity. Этот минус можно обойти, меняя уровень слоя дочерних спрайтов скриптом родительского спрайта.

У обычных спрайтов затенение-освещение можно включить с помощью параметра Diffuse, у SVG такого нет, но если перед спрайтом поставить черный спрайт такого же размера и на этот второй повесить шейдер https://pastebin.com/gsU3xMzv, получится имитация затенения на расстоянии.

Bhudh

Цитата: Easyskanker от октября 20, 2019, 01:30
Отобразятся все пакеты. Все, да не все.
Вот за такое использование кванторов надо бить. Чётко и больно. Если написано "ВСЕ", должны быть ВСЕ, безо всяких advanced.
Что это за "всё и ещё чуть-чуть"? :fp:
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр