Лингвофорум

Лингвоблоги => Личные блоги => Блоги => Easyskanker => Тема начата: Easyskanker от декабря 26, 2018, 18:53

Название: Уроки Unity
Отправлено: Easyskanker от декабря 26, 2018, 18:53
Пишу главным образом для себя, потому что жизнь такая штука, на каждое действие противодействие, причем очень неслабое, и если придется на долгое время отвлечься от своих проектов, эти уроки помогут вникнуть обратно.
Название: Уроки Unity
Отправлено: Easyskanker от декабря 26, 2018, 18:56
Дело №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 (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. Если созданное вами приложение открылось, и открылось корректно, крикните "УРА", позовите гостей, откройте шампанское и закатите банкет. Если нет, значит разрабы Юнити и/или Андроид опять что-то поменяли и вам необходимо искать более свежее руководство.
Название: Уроки Unity
Отправлено: Karakurt от декабря 26, 2018, 20:16
Цитата: 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
Нету.
Название: Уроки Unity
Отправлено: Easyskanker от декабря 27, 2018, 13:09
Цитата: 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. Открываем Юнити, создаем пустой проект
?
Название: Уроки Unity
Отправлено: Easyskanker от декабря 27, 2018, 16:52
Дело №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 на гаджет, открываем и видим свои координаты.
Название: Уроки Unity
Отправлено: Bhudh от декабря 27, 2018, 16:54
Цитата: Easyskanker от декабря 27, 2018, 16:52устанавливаем полученный apk на гаджет, даём ему разрешение на доступ к геолокации, открываем
Название: Уроки Unity
Отправлено: Easyskanker от декабря 27, 2018, 17:11
У меня при установке запрос на разрешение доступа к интернету и к GPS вылез, на автомате "окей" нажал. Ну так-то да, само собой разумеется.
Название: Уроки Unity
Отправлено: Easyskanker от декабря 29, 2018, 20:34
Unity позиционируют как движок, на котором можно создавать игры, не зная программирования. Это верно только в том случае, если вы будете тупо покупать платные ассеты в Юнити-стор пачками и тупо лепить их друг к другу, получая примерно то же, что вы могли получить в начале десятых в 3D Game Maker (ныне Cyberix3D, кажется). Иначе это очередная маркетинговая чушь: вам понадобится знать даже в два раза больше, чем язык программирования, потому что надо также знать приемы и закидоны Юнити, а потом еще их переучивать, когда поменяются с обновлениями или добавятся новые. В общем, в этом посте буду постепенно накапливать ссылки на учебные материалы по C#, по которым начинаю обучаться, и начинаю я с самых азов.

https://download.microsoft.com/documents/rus/msdn/c_sharp2.pdf (https://download.microsoft.com/documents/rus/msdn/c_sharp2.pdf) - Мартин Дрейер "C# для школьников"
Название: Уроки Unity
Отправлено: Easyskanker от декабря 30, 2018, 21:46
Дело №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! ⇓⇓⇓
Название: Уроки Unity
Отправлено: Easyskanker от декабря 31, 2018, 12:29
Пожалуй лучше все-таки вместо слова "урок" использовать слово "дело", ближе по смыслу.
Название: Уроки Unity
Отправлено: Easyskanker от марта 23, 2019, 23:48
Создание платформера на Unity, урок 1:
https://habr.com/ru/company/microsoft/blog/236125/
Название: Уроки Unity
Отправлено: Easyskanker от марта 25, 2019, 17:12
Дело №4. Экспорт модели с анимацией из DAZ в Unity.


DAZ:

-- Внизу, где таймлайн, откройте выпадающий список (я обозначил его розовой стрелочкой), и выберите нужную анимацию.
(https://pp.userapi.com/c849536/v849536676/1c68e4/6djN2YIPpy4.jpg)

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


-- Нажмите ПКМ на маленьком черном треугольничке (он над левом верхним углом всплывшего меню на скрине), выберите Bake to Studio Keyframes.
(https://pp.userapi.com/c851532/v851532853/e9c3d/9d1jqD599hE.jpg)

-- File -> Export, выберите формат fbx. В Output Options выберите "FBX 2014" и расставьте галочки как на скрине. Нажмите Accept.
(https://pp.userapi.com/c848732/v848732803/159436/PBEW1gu8K2E.jpg)


Unity:

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

-- В свойствах модели перейдите в раздел Materials и выставьте следующие настройки, нажмите Apply.
(https://pp.userapi.com/c852128/v852128853/e5790/fwDJr8xPkRA.jpg)

-- Для удобства создайте плоскость (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. Перетащите модель персонажа из созданной нами папки в открывшуюся вкладку.
(https://pp.userapi.com/c851416/v851416964/e9943/r9xx2DL0EbI.jpg)

-- Теперь можете запустить игру и посмотреть, как работают анимации.
Название: Уроки Unity
Отправлено: Easyskanker от марта 25, 2019, 17:59
Пока мной было замечено, что Unity очень сильно не дружит с дазовскими моделями восьмого поколения (Genesis 8). Возникают ужасные артефакты (впрочем, для какого-нибудь инди-хоррора это интересная находка). Будем посмотреть, как ведут себя модели других, более ранних поколений.

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

Проблема я так понял в морфах. Без морфов G3 и G8 более-менее адекватно себя ведут, не разлетаются в лапшу, как с морфами, но все равно возникают какие-то левые кадры.
Название: Уроки Unity
Отправлено: Easyskanker от марта 30, 2019, 21:13
Итак, без морфов G3/G8 корректно импортируются, с анимацией, одеждой, волосами, формами, со всем, что нужно, надо только в Unity во вкладке Rig у модели выбрать тип анимации "humanoid", ну и при экспорте из DAZ снять галочку с морфов, конечно.

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

В принципе, морфы требуются только для изменения внешности на ходу, в самой игре, так что можно без них прекрасно обойтись, тем более в инди.
Название: Уроки Unity
Отправлено: Easyskanker от июня 15, 2019, 18:14
При экспорте из 3ds Max (в формат fbx, конечно же) очень важно поставить галочку "Embed Media", чтобы не отвалились текстуры.

(https://pp.userapi.com/c853424/v853424647/6ba93/g85TNa0CmM8.jpg)

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

(https://pp.userapi.com/c850524/v850524647/14e4fe/nEtvQoa3Les.jpg)
Название: Уроки Unity
Отправлено: Easyskanker от июня 16, 2019, 09:50
Чтобы на объекте была текстура с прозрачностью (например, когда делаете сетчатый забор) перетащите на объект текстуру, имеющую альфа-канал (.png/.dds/.tga/.tiff), и в свойствах объекта во вкладке Mesh Renderer в параметре Shader выберите Legacy Shaders->Transparent->Diffuse:

(https://pp.userapi.com/c850536/v850536354/141200/kPYlOPeqZc8.jpg) (https://pp.userapi.com/c850536/v850536354/141200/kPYlOPeqZc8.jpg)
Название: Уроки Unity
Отправлено: Easyskanker от июня 18, 2019, 11:03
Character Controller для управления от третьего или первого лица:

https://docs.unity3d.com/ru/current/Manual/class-CharacterController.html (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.
Название: Уроки Unity
Отправлено: Easyskanker от июня 18, 2019, 20:18
https://learn.unity.com (https://learn.unity.com/tutorials/?k=%5B%22t%3Atutorial%22%5D) - актуальные туториалы по Юнити.
https://www.youtube.com/watch?v=0PPCDqhksuU управление персонажем
https://www.youtube.com/watch?v=WJqnXc4keRk Let's Make A Stealth Game
Название: Уроки Unity
Отправлено: Easyskanker от июня 18, 2019, 21:35
Дело №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 отвечают за перемещение вперед-назад, стрелки влево-вправо отвечают за поворот в соответствующую сторону.
Название: Уроки Unity
Отправлено: Easyskanker от июня 22, 2019, 22:10
Дело №6. Character Controller. TPS.


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

-- В свойствах Terrain выбираем кисть Raise or Lower Terrain с формой builtin_brush_8, задаем ей параметры Brush Size = 25 и Opacity = 5, рисуем по краям карты горы.
(https://pp.userapi.com/c848624/v848624195/1c772f/OO1TJAlXBcM.jpg)

-- В местах, где вершины слишком острые, используйте кисть 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.
(https://pp.userapi.com/c850624/v850624153/14f9e2/E5kNngb70h8.jpg)

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

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

-- В свойствах модели в разделе Animator выставляем такие параметры (название модели у вас будет другим):
(https://pp.userapi.com/c850736/v850736153/152fcd/YIH-ac4hQYk.jpg)

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

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

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

-- Подвинем камеру поближе к правому плечу модели, затем перетащим камеру на модель в иерархии объектов, чтобы прикрепить.
(https://pp.userapi.com/c851428/v851428162/15646e/i279DMAwvWo.jpg)

-- Теперь запустим, нажав кнопочку Play. Модель должна ходить по нажатию клавиш W и S, поворачиваться по нажатию A и D.
Название: Уроки Unity
Отправлено: Easyskanker от августа 9, 2019, 12:21
Полезные советы:

-- В любых полях для ввода чисел можно писать математические выражения со сложением, вычитанием, умножением и делением. Например, вы создали куб с координатой икс 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"). Выпадет список, в котором можно выбрать подходящую иконку. В иконку можно добавить имя объекта.
Название: Уроки Unity
Отправлено: Easyskanker от октября 3, 2019, 07:22
Цитата: 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).
Название: Уроки Unity
Отправлено: Easyskanker от октября 4, 2019, 19:41
Дело №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 возникла эта же картинка, вы всё сделали правильно. С такой рилтайм-отладкой вы сэкономите себе десятки часов.
Название: Уроки Unity
Отправлено: Easyskanker от октября 20, 2019, 01:30
Дело №8. Импорт SVG


Открываем через главную панель инструментов Window >> Package Manager, в открывшемся окошке нажимаем All Packages, галочку на All Packages:
(https://sun9-24.userapi.com/c854128/v854128722/135fbf/u180OM4sP9s.jpg)

Отобразятся все пакеты. Все, да не все. Нужный нам плагин запрятан среди устаревших. Жмем Advanced:
(https://sun9-16.userapi.com/c851520/v851520722/1ecb15/Vk_IAuPVa5Y.jpg)

В открывшемся списке выбираем Show preview packages:
(https://sun9-7.userapi.com/c857420/v857420722/afae9/qIJHJsMPxa0.jpg)

В теперь уже полном списке находим Vector Graphics:
(https://sun9-71.userapi.com/c850724/v850724722/1e51aa/3vHqbM5KE3U.jpg)

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

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

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

У обычных спрайтов затенение-освещение можно включить с помощью параметра Diffuse, у SVG такого нет, но если перед спрайтом поставить черный спрайт такого же размера и на этот второй повесить шейдер https://pastebin.com/gsU3xMzv, получится имитация затенения на расстоянии.
Название: Уроки Unity
Отправлено: Bhudh от октября 20, 2019, 12:57
Цитата: Easyskanker от октября 20, 2019, 01:30
Отобразятся все пакеты. Все, да не все.
Вот за такое использование кванторов надо бить. Чётко и больно. Если написано "ВСЕ", должны быть ВСЕ, безо всяких advanced.
Что это за "всё и ещё чуть-чуть"? :fp:
Название: Уроки Unity
Отправлено: Easyskanker от октября 20, 2019, 13:47
Цитата: Bhudh от октября 20, 2019, 12:57
Цитата: Easyskanker от октября 20, 2019, 01:30
Отобразятся все пакеты. Все, да не все.
Вот за такое использование кванторов надо бить. Чётко и больно. Если написано "ВСЕ", должны быть ВСЕ, безо всяких advanced.
Что это за "всё и ещё чуть-чуть"? :fp:
Сам в шоке.
Название: Уроки Unity
Отправлено: Easyskanker от октября 29, 2019, 17:14
Еще один полезный плагин, погребенный среди устаревших, чтобы освободить дорогу васянским поделкам на его основе в Asset Store: https://docs.unity3d.com/Packages/com.unity.2d.pixel-perfect@1.0/manual/index.html. Позволяет сохранять качество пиксель-арта при любом разрешении экрана, например игра под сеговский формат 320х224 растянется без потери качества хоть на 2560х1440, хоть на 7680×4320. Что интересно, работает хорошо и в 3D.
Название: Уроки Unity
Отправлено: Easyskanker от ноября 4, 2019, 17:21
Дело №9. Occlusion Culling


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

Заранее поставьте галочку Static в свойствах тех объектов, которые не планируется перемещать в самой игре.

С главной панели инструментов заходим в Window >> Rendering >> Occlusion Culling. Все параметры оставляем по умолчанию.

Жмем кнопку Bake ("запечь"):
(https://i.ibb.co/QX5Bg4f/siuda.jpg)

Теперь, передвигая камеру или Character Controller в сцене, вы заметите, что все невидимые камере объекты не отображаются. Так будет и в игре.
Название: Уроки Unity
Отправлено: Easyskanker от декабря 22, 2019, 15:53
Дело №10. Движение по клику мыши в 2D, часть первая


Создаем plane, заходим в Window>>AI>>Navigation. Выделив plane, в окне Navigation переходим на вкладку Object, ставим галочку на Navigation Static. Navigation Are оставляем по умолчанию walkable. Во вкладке Bake жмем Bake - "запекаем".

Создаем спрайт 1, вешаем на него компонент NavMeshAgent. Создаем скрипт Sledui, вешаем на спрайт 1:

Создаем спрайт 2. Спрайт 2 закидываем в Destination скрипта, который на спрайте 1.

На каждый спрайт вешаем Box Collider. Коллайдеры у нас будут трехмерными, потому что NavMesh в Юнити работает только в 3D.

В настройках камеры выбираем ортогональную проекцию, по этому уроку (https://docs.unity3d.com/Packages/com.unity.2d.pixel-perfect@1.0/manual/index.html) вешаем на нее компонент 2DPixelPerfect для корректного отображения спрайтов в любых разрешениях экрана. Поворачиваем камеру к полу и поднимаем:
(https://sun9-28.userapi.com/c855016/v855016487/19a8e8/1qkXyYi1XzM.jpg)

Спрайты соответственно тоже поворачиваем к камере, как бы кладем на plane.

Создаем скрипт Dvig, вешаем на спрайт 2:

Когда запустим, спрайт 1 будет с определенной скоростью следовать к спрайту 2, и спрайт 2 будет мгновенно перемещаться в место, куда кликнем.
Название: Уроки Unity
Отправлено: Easyskanker от декабря 22, 2019, 18:33
Дело №10. Движение по клику мыши в 2D, часть вторая


Чтобы персонаж мог перемещаться только в определенной области, делаем следующее:

- Удаляем компонент со скриптом Dvig из спрайта 2.

- Смотрим имя спрайта 2. У меня это hatguy. Вы можете написать любое. Меняем строки Dvig

на строки

Вместо "hatguy" используйте имя вашего спрайта.

- Создаем четырехугольник: GameObject>>3D Object>>Quad. Поворачиваем к камере, вешаем на него скрипт Dvig. В свойствах четырехугольника снимаем галочку с Mesh Renderer, чтобы не был виден игроку (на первый тест можно не снимать).

- Вешаем на четырехугольник скрипт Dvig.

- Запускаем. Спрайт 2 должен перемещаться по клику строго в пределах четырехугольника, спрайт 1 всё так же следует за ним.
Название: Уроки Unity
Отправлено: Easyskanker от сентября 25, 2020, 11:14
Дело №11. Как сделать билборд - спрайт, который всегда поворачивается к игроку

Пишем скрипт BillBoard:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BillBoard : MonoBehaviour
{
    private SpriteRenderer theSR;


    // Start is called before the first frame update
    void Start()
    {
        theSR = GetComponent<SpriteRenderer>();
        theSR.flipX = true;
    }

    // Update is called once per frame
    void Update()
    {
        transform.LookAt(PlayerController.instance.transform.position, -Vector3.forward);
    }
}


Вытаскиваем на сцену нужный спрайт, вешаем на него этот скрипт.
У вас уже должен быть скрипт PlayerController, так как поворот спрайта к игроку подразумевает вид от первого лица. Добавьте строчку в блок объявления переменных скрипта PlayerController:
public static PlayerController instance;


Добавьте следующую функцию:
private void Awake()
    {
        instance = this;
    }


Готово.
Название: Уроки Unity
Отправлено: Easyskanker от января 26, 2021, 10:42
Шейдер Billboard (с ним скрипты не нужны, просто создаете материал с текстурой спрайта и присваиваете материалу этот шейдер):


Shader "Custom/Billboard"
{
     Properties
     {
        _MainTex("Texture Image", 2D) = "white" {}
        _ScaleX("Scale X", Float) = 1.0
        _ScaleY("Scale Y", Float) = 1.0
     }
     SubShader
     {
         Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
         ZWrite Off
         Blend SrcAlpha OneMinusSrcAlpha

         Pass
         {
             CGPROGRAM

             #pragma vertex vert 
             #pragma fragment frag

             // User-specified uniforms           
             uniform sampler2D _MainTex;
             uniform float _ScaleX;
             uniform float _ScaleY;

             struct vertexInput
             {
                 float4 vertex : POSITION;
                 float4 tex : TEXCOORD0;
             };
             struct vertexOutput
             {
                 float4 pos : SV_POSITION;
                 float4 tex : TEXCOORD0;
             };

             vertexOutput vert(vertexInput input)
             {
                 vertexOutput output;

                 output.pos = mul(UNITY_MATRIX_P,
                 mul(UNITY_MATRIX_MV, float4(0.0, 0.0, 0.0, 1.0))
                 + float4(input.vertex.x, input.vertex.y, 0.0, 0.0)
                 * float4(_ScaleX, _ScaleY, 1.0, 1.0));

                 output.tex = input.tex;

                 return output;
             }

             float4 frag(vertexOutput input) : COLOR
             {
                 return tex2D(_MainTex, float2(input.tex.xy));
             }

             ENDCG
         }
     }
}
Название: Уроки Unity
Отправлено: Easyskanker от января 27, 2021, 10:07
Наконец, идеальный вариант. По ссылке https://github.com/Toocanzs/Vertical-Billboard скачиваем архив, распаковываем в папку Shaders нашего проекта. Создаем материал в папке Materials, назначаем материалу шейдер Toocanzs->VerticalBillboard Transparent, материал перетягиваем на наш спрайт, готово. Спрайт будет поворачиваться к игроку по горизонтальной оси и не будет наклоняться по вертикальной.
Название: Уроки Unity
Отправлено: Easyskanker от января 28, 2021, 15:18
Дело №12. Настройка в Юнити модели, импортированной из Миксамо


- Выделяем импортированную модель. В инспекторе во вкладке Rig меняем Animation Type с Generic на Humanoid. Во вкладке Materials меняем Location на Use External Materials (Legacy)

- Для материала волос/усов/бороды меняем Rendering Mode на Fade, ставим Metallic на единицу

- Чтобы пофиксить ресницы, меняем для материала тела Rendering Mode на Cutout,  alpha cutoff 0.5

- Для одежды качаем шейдер https://gist.github.com/charlespina/7418744 , кидаем в подходящую папку проекта, назначаем материалу одежды шейдер Mixamo/Shadier, в слот Specular материала перетаскиваем соответствующую текстуру (ее название заканчивается на specular), Specular Amount ставим на единицу.


После этого танца с бубном модель должна приобрести презентабельный вид.
Название: От: Уроки Unity
Отправлено: Easyskanker от июля 21, 2022, 19:10
Дело №13. Кнопки.

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

- В верхнем меню выбираем GameObject>>UI>>Button TextMeshPro, располагаем кнопку в нужном нам месте;

- Создадим например пустой объект (назовем Main), на который повесим основной скрипт: Ctrl+Shift+N;

- Создаем среди папок проекта папку Scripts, в ней соответственно создадим C# скрипт (смотрите, чтобы название скрипта и название основного класса в скрипте совпадали);

- Теперь, чтобы по нажатию кнопки срабатывал метод, который вы пропишете в этом скрипте, в свойствах (Inspector) кнопки найдите в разделе Button (Script) подраздел On Click(), нажмите в нем плюсик, в окошечко под Runtime Only перетащите объект Main, нажмите где написано No Function, в выпавшем списке вы сможете выбрать нужный метод из вашего скрипта.


P.S.: Чтобы установить дефолтный фокус на какой-либо кнопке, перетащите ее в окошко First Selected в разделе Event System (Script) объекта Event System, который создается автоматически вместе с кнопками.