Всем привет! Только что, наконец, прошел проверку мой первый плагин для юнити:
CHi
С ним можно легко устанавливать стили (иконки, фон, цвет текста) для объектов в иерархии по любым условиям.
В пару кликов можно установить стили по тэгу, названию слоя, по состоянию enabled/disabled объекта.
Возможность установить одну из 42 встроенных иконок, либо использовать свои.
Задавать общий для всех иконок цвет по умолчанию и переопределять цвет для конкретны стилей.
Либо установить стили по вашему условию через код
На первый взгляд может показаться громоздко, но стили по условию добавляются быстро и позволяют организовать приятный порядок и хорошую читаемость в сложных проектах
Для того, что бы задать стили по условию нужно реализовать в своём скрипте интерфейс ICHi с его единственным методом CHiCondition CHiThis()
Синтаксис:
Используется csharp
public CHiCondition CHiThis()
{
return new CHiCondition();
}
{
return new CHiCondition();
}
далее, добавляем условия с помощью метода Add() прямо на только что созданном объекте CHiCondition.
Первым параметром в метод передаём лямбда выражение, возвращающее bool. Если результатом выражения будет true - стиль будет применён.
Второй параметр - объект CHiStyle. У него есть несколько методов, как WithBackground, WithForeground, WithIcon и WithColoredIcon, с помощью которых вы можете собрать стиль с нужными иконками и цветами.
Так же одному объекту можно задать несколько разных стилей с разными условиями:
Синтаксис:
Используется csharp
public CHiCondition CHiThis()
{
return new CHiCondition()
// Этот стиль будет применён ко всем объектам, к которым прикреплён этот скрипт (задаст цвет текста)
.Add(() => true, new CHiStyle().WithForeground(new Color(0.4f, 0.1f, 0.4f)))
// Этот стиль переопределит предыдущий, если название объекта начинается с Angry, и добавит вашу иконку (DemoSprite)
.Add(() => name.StartsWith("Angry"), new CHiStyle()
.WithForeground(CHiColor.Red)
.WithIcon(DemoSprite))
// Этот стиль переопределит предыдущие, если название объекта начинается с Nice, добавит одну из иконок по умолчанию (Heart)
.Add(() => name.StartsWith("Nice"), new CHiStyle()
.WithForeground(CHiColor.Green)
.WithColoredIcon(CHiIcon.Heart, Color.black))
// Этот стиль будет применяться, если у объекта есть дочерние объекты
.Add(() => transform.childCount > 0, new CHiStyle()
.WithBackground(new Color(.5f, .8f, .5f))
.WithIcon(CHiIcon.Layers));
}
{
return new CHiCondition()
// Этот стиль будет применён ко всем объектам, к которым прикреплён этот скрипт (задаст цвет текста)
.Add(() => true, new CHiStyle().WithForeground(new Color(0.4f, 0.1f, 0.4f)))
// Этот стиль переопределит предыдущий, если название объекта начинается с Angry, и добавит вашу иконку (DemoSprite)
.Add(() => name.StartsWith("Angry"), new CHiStyle()
.WithForeground(CHiColor.Red)
.WithIcon(DemoSprite))
// Этот стиль переопределит предыдущие, если название объекта начинается с Nice, добавит одну из иконок по умолчанию (Heart)
.Add(() => name.StartsWith("Nice"), new CHiStyle()
.WithForeground(CHiColor.Green)
.WithColoredIcon(CHiIcon.Heart, Color.black))
// Этот стиль будет применяться, если у объекта есть дочерние объекты
.Add(() => transform.childCount > 0, new CHiStyle()
.WithBackground(new Color(.5f, .8f, .5f))
.WithIcon(CHiIcon.Layers));
}
Результат работы этого скрипта:
Посмотреть на работу плагина на живых примерах можно в этом видео
(ох, как я замучился его записывать )
У меня уже есть идеи для дальнейшего развития плагина
С удовольствием выслушаю ваши идеи и пожелания