Buffer icon Проекты
135 заметок с тегом

unity

Позднее Ctrl + ↑

Как добавить фреймворк в секцию 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 проект... :(

 Нет комментариев    538   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

 Нет комментариев    505   2017   ecs   unity   разработка   с#

Unity 2017.3

Вышла новая версия Unity 2017.3. Последний релиз в этом году. Кроме привычных улучшений графики и производительности (ага), есть пара интересных вещей:

  • Панорамные видео 360/180
  • Улучшение системы частиц
  • Пользовательские сборки
    Теперь можно определять свои сборки, чтобы они каждый раз не компилировались, экономя время. Актуально для больших проектов.
  • Поддержка Mono .NET 2.0 в Managed Memory Profiler
  • Обновление библиотеки сжатия Crunch
    Теперь в 2,5 раза быстрее DXT и есть ETC_RGB4 и ETC2_RGBA8
  • Улучшение графики
  • Улучшение света
  • Поддержка Xbox One X
  • Поддержка Xiaomi Store
    На Хабре уже мануал написали как подготовиться к публикации в Xiaomi Store.

Подробнее в блоге Unity (анг.): https://blogs.unity3d.com/ru/2017/12/19/unity-2017-3-is-here/

 Нет комментариев    281   2017   unity   ссылки

Unity EventManager 2.0

Меня спрашивали про простой менеджер событий Unity, как передавать разные параметры и количество, а то строки неудобно. В общем-то, это был пример, но если кому-то оказалось нужно — то вот немного улучшенная версия:

using UnityEngine;
using UnityEngine.Events;
using System.Collections.Generic;
using System;

public class EventManager : MonoBehaviour {

    [Serializable]
    public class GameEvent : UnityEvent<object[]> { };

    private static EventManager _instance;
    private Dictionary<string, GameEvent> _eventDictionary;

    void Awake () {
        if (_instance != null)
            return;
        _instance = GetComponent<EventManager> ();
        if (_eventDictionary == null)
            _eventDictionary = new Dictionary<string, GameEvent> ();
    }

    /// <summary>Добавляем "слушателя" для события</summary>
    /// <param name="eventName">Название события</param>
    /// <param name="listener">Метод-обработчик события</param>
    public static void Subscribe (string eventName, UnityAction<object[]> listener) {
        GameEvent thisEvent;
        if (_instance._eventDictionary.TryGetValue (eventName, out thisEvent))
            thisEvent.AddListener (listener);
        else {
            thisEvent = new GameEvent ();
            thisEvent.AddListener (listener);
            _instance._eventDictionary.Add (eventName, thisEvent);
        }
    }

    /// <summary>Удаляем "слушателя" из списка</summary>
    /// <param name="eventName">Название события</param>
    /// <param name="listener">Метод-обработчик события</param>
    public static void Unsubscribe (string eventName, UnityAction<object[]> listener) {
        if (_instance == null)
            return;
        GameEvent thisEvent;
        if (_instance._eventDictionary.TryGetValue (eventName, out thisEvent))
            thisEvent.RemoveListener (listener);
    }

    /// <summary>Отправить событие</summary>
    /// <param name="eventName">Название события</param>
    /// <param name="parameters">Параметр массив</param>
    public static void SendEvent (string eventName, params object[] parameters) {
        GameEvent thisEvent;
        if (_instance._eventDictionary.TryGetValue (eventName, out thisEvent)) {
            thisEvent.Invoke (parameters);
        }
    }
}

Теперь количество параметров динамическое и любого типа. Для простого взаимодействия, вполне работоспособно. Пример использования:

void OnEnable () {
	EventManager.Subscribe ("event_name", MyFunction);
}

void OnDisable () {
	EventManager.Unsubscribe ("event_name", MyFunction);
}

void MyFunction (object[] parameters) {
	Debug.Log (parameters.Length); // количество параметров -> 3 в примере
	Debug.Log (parameters[1]);        // выведет -> 1 
}

...

EventManager.SendEvent ("event_name", "param_string", 1, 2); // вызов события
 1 комментарий    1544   2017   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? И окошек столько же... Я думаю мысль понятна.

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

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 ;)

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

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

 Нет комментариев    234   2017   unity   видео

ARKit и Unity

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

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


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

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

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

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

 Нет комментариев    812   2017   ar   ios   unity   ссылки

Machine Learning теперь и в Unity

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

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

Это круто!

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

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

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

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

 Нет комментариев    810   2017   android   git   ios   plugin   unity
Ранее Ctrl + ↓