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

unity

Визуальное программирование в Unity

Для Unity уже давно существует ассет Playmaker, который позволяет создавать сценарии игры без написания кода. У него есть свои пользователи и их достаточно много. Я никогда не пользовался такими инструментами и думаю, что какой-либо более-менее серьезный проект невозможно сделать без написания кода.

Однако, для каких-то отдельных элементов и частей игры, такой подход вполне может сократить время разработки. Так недавно появился ещё один инструмент для визуального программирования, похожий на Blueprints из движка Unreal — Bolt.

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

  • два типа графов: как в Unreal Blueprints и конечные автоматы как в Playmaker
  • группировка, слои и зум
  • события, макросы, плагины
  • live-редактирование
  • поддержка всех типов
  • встроенная документация

Кроме того, судя по плану разработки — у этого инструмента будет много полезных и удобных функций. Ещё есть сравнительная таблица с другими визуальными редакторами.


А вот что касается использования визуальных средств для создания сложных шейдеров, то тут я «за» :) Таких инструментов много, цены на них приемлемые и результат достойный.

  1. Amplify Shader Editor
  2. Shader Forge
  3. Shader Weaver

Если хочется начать с чего-нибудь попроще и получить красивый результат, есть ассет Minimalist. Привет, Monument Valley!

Можно применять разные цвета на разные стороны объекта с одним материалом, использовать градиенты, есть встроенный редактор материалов, стоит недорого и есть версия Free.

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

Автоподстановка полей в UI

Нашёл интересное решение, которое сохранит дорогое время разработки, взяв на себя рутинные операции по присвоению объектов со сцены полям класса. Как-то так.

Например: вы сделали новый объект интерфейса, создали для него класс, добавили соответствующие поля и потом ручками в инспекторе Unity присвоили текстовое поле к Text и кнопку к Button.

А если таких полей 10-15? И окошек столько же... Я думаю мысль понятна.

Вот как раз для таких дел этот скрипт и есть. Только делает он всё сам. Работает это так:

using UnityEngine;
using UnityEngine.UI;

public class DialogWindow : AutoReferencer<DialogWindow> {
   public Text DialogLabel;
   public Button ConfirmButton;
}
Главное, чтобы названия полей и имена объектов совпадали. И типы соответственно.

Ну и сам скрипт. Конечно, вряд ли есть возможность использовать его везде — всё-таки архитектура приложения у всех отличается, однако, полезность какая-то в нём есть.

using System.Linq;
using UnityEngine;

public class AutoReferencer<T> : MonoBehaviour where T : AutoReferencer<T> {

   #if UNITY_EDITOR
   // Этот метод вызывается один раз, когда мы добавляем компонент на объект
   protected new virtual void Reset()
   {
       // Магия рефлексии
       // Для каждого поля в классе/компоненте, мы ищем только пустые или null
       foreach (var field in typeof(T).GetFields().Where(field => field.GetValue(this) == null))
       {
           // Теперь ищем объект с таким же именем
           Transform obj;
           if (transform.name == field.Name)
           {
               obj = transform;
           }
           else
           {
               obj = transform.Find(field.Name); // Или нужно сделать рекурсию, чтобы пойти глубже по иерархии
           }

           // Если находим объект с таким же именем как и поле - пытаемся присвоить его к этому полю
           if (obj!=null)
           {
               field.SetValue(this, obj.GetComponent(field.FieldType));
           }
       }
   }
   #endif
}

Подглядел на The Knights of Unity ;)

20 октября   unity   интерфейс   разработка   с#

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

Если вы ещё не видели — вторая часть видео полностью сделанного на Unity. Это реалтайм рендеринг!

17 октября   unity   видео

ARKit и Unity

ARKit от Apple сделал то, что не смог Google в своё время. Хотя все эти технологии уже несколько лет как известны и работают, Apple смогли всё это упаковать, выдать за инновацию (их!) и красиво продать — как обычно.

И я думаю, что будущее как раз за дополненной реальностью (AR), а не за виртуальной (VR). Потому что AR позволяет взаимодействовать с реальным миром: обучаться рисованию/медицине, управлять каким-нибудь девайсом, делать путешествия и экскурсии более интерактивными, и т. д.


Чтобы проверить ARKit на Unity, потестить демки и сделать что-то своё, вам потребуется:

  • iPhone 6S+ с iOS 11
  • Unity 5.6+
  • плагин ARKit
  • скорее всего обновить XCode, потому что старый не даст запустить приложение на iOS 11

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

Ну и несколько видео, что можно сделать с помощью ARKit.

29 сентября   ar   ios   unity   ссылки

Machine Learning теперь и в Unity

На волне популярности дополненной реальности, машинного обучения и нейронных сетей — Unity выпустила в открытый бета-тест свой SDK для машинного обучения.

На Github есть вики с описанием, как начать работать с SDK.
А вот так выглядит демо обучения агента:

Это круто!

20 сентября   unity   разработка

Отправка письма из Unity

Ничего особенного конечно, ничем не отличается от самого обычного плагина для iOS или Android, но кто-то у меня спрашивал про это.
Весь код умещается на одном экране, дольше демку делал :)

Исходники на Github

Вообще, надо бы собрать все плагины, мелочуху и выложить на гитхаб: синхронизация с iCloud, in-app покупки (не доверяю я Unity IAP :), буфер обмена, получение изображения с камеры и галереи, сохранение в галерею, push уведомления, запись в keychain, авторизация через Google Sign-in, встроенный браузер и прочее.
Если что-то заинтересовало — пишите в комменты или mail@mopsicus.ru.

7 сентября   android   git   ios   plugin   unity

Unit тесты в Unity

Что такое юнит-тестирование, зачем оно нужно, стоит ли покрывать весь код тестами — можно узнать из этой хорошей статьи. Я лучше сразу скажу, как создать тест в Unity. Открываем пункт меню Window → Editor Tests Runner. Если у вас ещё нет тестов, то увидите окно, как на скриншоте, если нет этого пункта меню — значит у вас старая версия Unity :)

При нажатии на кнопку — создастся пример теста. Все!
На самом деле — нет.

using UnityEngine;
using UnityEditor;
using NUnit.Framework;

public class NewEditorTest {

	[Test]
	public void EditorTest() {
		//Arrange
		var gameObject = new GameObject();

		//Act
		//Try to rename the GameObject
		var newGameObjectName = "My game object";
		gameObject.name = newGameObjectName;

		//Assert
		//The object has a new name
		Assert.AreEqual(newGameObjectName, gameObject.name);
	}
}

Как видно, у метода есть атрибут [Test], который и указывает, что это будет тестом. Если создать несколько тестов и запустить их через тот же Editor Tests Runner, можно увидеть какие тесты прошли, а какие нет:

В Unity для тестирования используется опенсорсная библиотека NUnit, которая предназначена для работы с .Net языками, в том числе и с C#. На Github есть обширная документация, где расписаны все атрибуты которые можно использовать.

Кроме того, есть специальные Unity-атрибуты, с помощью которых можно тестировать корутины, запускать тесты в режимах редактирования или игры, тестировать на определенных платформах. Доки и примеры есть на сайте Unity.

Также, у Unity есть ещё специальный ассет для тестирования — Unity Test Tools, но как я понял они его перестали поддерживать.

1 сентября   unity   ассеты   инструменты   разработка   с#

Как начать использовать Vuforia в Unity

Vuforia — это платформа дополненной реальности. С её помощью можно делать такие приколюхи, например:

Собственно, в этой статье как раз и написали, как скачать, установить, настроить и сделать свою первую игру с дополненной реальностью (AR). На английском да, но куда ж без него в наше время.

Про ARKit от Apple в следущий раз :) Плюс Vuforia — работает и на Android тоже.

2017   ar   unity   ссылки

Работа в фоне в iOS и Unity

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

-(void) startTask {
    [self endTask];
    if (bgTask == UIBackgroundTaskInvalid) {
        bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            [[UIApplication sharedApplication] endBackgroundTask:bgTask];
            bgTask = UIBackgroundTaskInvalid;
        }];
    }
}

- (void) endTask {
    if (bgTask != UIBackgroundTaskInvalid) {
        [[UIApplication sharedApplication] endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }
    [UIApplication sharedApplication].idleTimerDisabled = NO;
}

А в Unity это вызывается на OnApplicationFocus:

void OnApplicationFocus (bool focusStatus) {								
    if (focusStatus) 
        Background.StopTask();
    else 
        Background.StartTask();
}

Ссылка на Github

2017   git   ios   plugin   unity   разработка

10 полезных ассетов и библиотек для Unity

Небольшой список библиотек и ассетов которые я использую или использовал в разных проектах. Будет полезно новичкам в Unity, чтобы не выдумывать свои велосипеды. Так как я 3D почти не занимаюсь, то и ассеты будут соответствующие ;)

1. Библиотека скриптов от Leopotam [Ссылка]

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

2. Lean Touch [Ссылка]

Бесплатный ассет для работы с тач события на мобильных устроствах. Перемещение, тапы, мультитач, всё поддерживает и очень просто в использовании. Есть платная про версия.

3. NiceJson [Ссылка]

Один скрипт для работы с JSON. Полная поддержка спецификации RFC4627, прекрасно работает в Unity.

4. Google Play Resolver [Ссылка]

Если вы используете в своих играх Google сервисы — эта библиотека вам необходима. Вам нужно лишь указать какие сервисы вы хотите использовать и она подгрузить все необходимые файлы и плагины для iOS и Android, чтобы не было конфликтов.

5. UI Extensions [Ссылка]

Про эту бесплатную библиотеку скриптов я тоже как-то упоминал. Стандартный набор UI компонентов в Unity довольно скромен и если вы хотите сделать интерфейс более интересным, интерактивным и живым — посмотрите эту либу. Она тоже поддерживается и развивается.

6. DOTween [Ссылка]

Наверно, самый лучший ассет для анимации объектов. Куча настроек и возможностей: параллельное выполнение, циклы, колбеки, паузы и т. д. Есть платная про версия — там еще больше ништяков.

7. TexturePacker [Ссылка] [Плагин]

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

8. AutoSaver [Ссылка]

Небольшой ассет который сохранит ваши время и нервы в порядке. Если у вас было, что редактор Unity зависал, а сцена не сохранена, вы поймете :) Ассет сохраняет сцену каждый раз когда вы нажимаете Play. Кстати, если после краша вы не успели снова запустить Unity, то восстановить сцену можно, она сохраняется в специальной папке

9. TextMesh Pro [Ссылка]

Лучший ассет для работы с текстом. Хорошо что Unity его приобрела и он теперь доступен всем. А пользователям которые покупали его, доступен исходный код, альфа и бета версии на сайте у автора.

10. Unity Assets [Ссылка]

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

Ранее Ctrl + ↓