Избранное Все заметки GitHub icon Мой Github Обо мне
73 заметки с тегом

unity

Позднее Ctrl + ↑

Интерполяция по нескольким точкам

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

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

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

public IEnumerator Move (Vector3[] positions, float time) {
	for (int i = 0; i < positions.Length; i++) {
		Vector3 startPosition = transform.position;
		float t = 0f;
		while (t < 1) {
			t += Time.deltaTime / time;
			transform.position = Vector3.Lerp (startPosition, positions[i], t);
			yield return new WaitForEndOfFrame();
		}
		transform.position = positions[i];
		startPosition = positions[i];
	}
}
...
Vector3[] positionsArray = { new Vector3 (10f, 10f, 0f), new Vector3 (20f, 20f, 0f), ... };
StartCoroutine (positionsArray, 1f);

Это если не хочется из-за одной функции тянуть левую библиотеку в проект :) А так, DOTween решает наверно все задачи связанные с анимацией объекта.

2018   unity   разработка

Видео по вторникам #7

Сначала TextMeshPro и Anima2D. И вот ProBuilder теперь часть Unity. Доступен бесплатно во всех редакциях. Polybrush и ProGrids тоже!

Unity скупает ассеты которые себя зарекомендовали и делает их часть движка. Это круто.

ProBuilder

Не работав раньше с такими инструментами, но скачав и потестировав, хочу сказать — это отличный инструмент для прототипирования! Быстрый и удобный.

ProGrids

Немного подробнее с гифками, в блоге Unity: https://blogs.unity3d.com/ru/2018/02/15/probuilder-joins-unity-offering-integrated-in-editor-advanced-level-design/

Подборка статей по мультиплееру

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

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

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

Генерация документации C# проекта

Как вы комментируете свой код?
Или так: вы комментируете свой код? :)

В своих Unity проектах я использую XML документацию. Это позволяет редактору кода или IDE использовать IntelliSense — всплывающие подсказки, автодополнение кода и т. п.

Для Visual Studio Code есть плагин в маркете C# XML Documentation Comments. Достаточно написать /// (три слеша) и плагин сгенерирует комментарий в нужном формате. Это удобно, это правильно, так надо делать :) В смысле, комментировать код.

Потом, с помощью таких XML комментариев можно сгенерировать документацию всего проекта. Например, с помощью Doxygen. Скармливаем Doxygen папку со скриптами и на выходе получаем что-то такое:

HTML документация

Unity blur effect и 2 камеры

В этом примере, я собрал сразу два интересных момента:

  1. как сделать размытый фон
  2. как использовать сразу 2 камеры

Для чего это может понадобиться? Например, чтобы одна камера была для игры, с настроенными пост эффектами, другая для интерфейса. Или чтобы сделать вот такой эффект размытия. В общем-то, можно и 3 камеры использовать. Зависит от потребностей и фантазии...

Фокус в том, чтобы настроить камеру на рендер только нужного слоя.
Как было сделано в этом примере:

  • Объекты или контейнер которые должны быть размыты, находятся в слое Blur
  • Blur camera рендерит только слой Blur (Culling Mask)
  • Для Main camera этот слой отключён, стоит флаг Depth only и глубина больше, чем у Blur camera
  • Ну и на Blur camera висит собственно скрипт размытия

По такому же принципу можно одновременно и 3 камеры сделать. Если потребуется.

Исходник на Github

2018   camera   git   unity   графика   разработка

Unity android plugin + onActivityResult

Автор приводит пример, как он решил вопрос с обработкой onActivityResult в андроидах плагинах для Unity. Создаёт отдельный активити, там перехватывает и завершает. Норм решение.

Ещё можно сделать специальный плагин который будет наследоваться от UnityPlayerActivity и прописать его в манифесте, чтобы он запускался первым. Там тоже можно переопределить onActivityResult.

Ну и ещё как вариант, запускать во фрагменте (fragment) и обрабатывать там.

2018   android   plugin   unity   ссылки
2018   unity   видео   с#

Unity на Linux

Оно работает!

Всмысле не оболочка Unity, а редактор Unity :)
На выходных решил проверить, как там Ubuntu и всё «вот это вот с ней»... Оказалось, что всё хорошо-то. Всё работает, обновляется, есть куча разного софта, Unity в конце концов.

Последний раз я ставил какой-то Linux года 3-4 назад, но как-то не пошло. Даже не знаю почему. Потом пересел на MacOS и забыл про Linux и Windows. И вот — Ubuntu 16.04 LTS. Полёт нормальный. Оборудование на ноутбуке определилось, тачпад, камера, звук и т. д. Конечно, я сразу загуглил «ubuntu после установки» и проделал несколько настроек, но в целом — всё норм. Почему Ubuntu? Я не разбираюсь в 100500 дистрибутивах, да и не охота как-то, поэтому выбрал, тот что на слуху.

Так вот, по поводу Unity. Оказывается сборки под линукс делаются регулярно. И последняя версия которую я скачал и установил Unity-2017.3.0p2, вполне себе работает. Правда, я пока ничего не пробовал на ней сбилдить, но обязательно проверю :) Версия под линукс всё ещё в бете, поэтому возможны косяки. Но я к этому готов.

VSCode тоже есть под линукс и отлично работает. Думал ещё SourceTree поставить, но разработчики не планируют её выпускать для линукса. Жаль конечно, но на форуме где обсуждалось (и осуждалось) это решение, я нашёл пост про GitKraken. И, он очень даже хорош! Также есть аналог маковского homebrew — linuxbrew.

В общем, линукс — это не страшно и не больно :_) На нём даже игры делать можно...

2018   linux   unity   инструменты   мысли

Как добавить фреймворк в секцию Embedded в XCode

Этой возможности не было до Unity 2017. Надо было вручную или сторонними средствами после билда проекта добавлять нужные фреймворки. ORLY?
Теперь же, с помощью AddCopyFilesBuildPhase это сделать можно. Последний параметр говорит об этом:

The «subfolder spec». The following usages are known: «10» for embedding frameworks; «13» for embedding app extension content; «16» for embedding watch content.

Готовый пример

А ещё можно подключить UnityEditor.iOS.Xcode.Extensions и использовать AddFileToEmbedFrameworks.

Но, они до сих пор так и сделали возможность добавлять нужные локализации в XCode проект... :(

2018   ios   iphone   unity

Unity & ECS

Тут Leopotam новый ECS для Unity запилил

Предлагаю тестить и пробовать что-нибудь сделать https://github.com/Leopotam/ecs
Обсуждение на Reddit
Чатик на gitter.im

Что такое ECS и зачем он нужен?

Подробно на примере другого фреймворка https://habrahabr.ru/post/197920/

Unity тоже делают свой ECS

Когда-нибудь в 2018 доделают :) Там же и про штатный DI https://www.youtube.com/watch?v=tGmnZdY5Y-E

2017   ecs   unity   разработка   с#
Ранее Ctrl + ↓