UnityFx.Outline
Подробности
UnityFx.Outline реализует настраиваемые контуры для каждого объекта и каждой камеры. Поддерживаются как сплошные, так и размытые контуры (размытие по Гауссу). Контуры можно легко настроить с помощью скриптов или редактора Unity (как во время редактирования, так и во время выполнения).
Реализация основана на командных буферах Unity, совместима с Unity Post-processing Stack v2 и Universal Render Pipeline, расширяема и не имеет внешних зависимостей.
Поддерживаемые параметры контура следующие:
- Цвет
- Ширина (в пикселях)
- Тип (сплошной или размытый)
- Интенсивность (для размытых контуров)
- Глубинное тестирование
- Альфа-тестинг
Использование
Установите пакет и импортируйте пространство имен:
using UnityFx.Outline;
Конутры для камеры (Built-in)
Добавьте OutlineEffect скрипт к камере, которая должна отображать контуры. Затем добавьте и настройте столько слоёв, сколько вам нужно. Слой контуров — это группа игровых объектов с одинаковыми настройками контуров:
var outlineEffect = Camera.main.GetComponent<OutlineEffect>();
var layer = new OutlineLayer("MyOutlines");
layer.OutlineColor = Color.red;
layer.OutlineWidth = 7;
layer.OutlineRenderMode = OutlineRenderFlags.Blurred;
layer.Add(myGo);
ineEffect.OutlineLayers.Add(layer);
или
var outlineEffect = Camera.main.GetComponent<OutlineEffect>();
// This adds layer 0 (if it is not there) and then adds myGo.
outlineEffect.AddGameObject(myGo);
// Now setup the layer.
var layer = outlineEffect[0];
layer.OutlineColor = Color.red;
layer.OutlineWidth = 7;
layer.OutlineRenderMode = OutlineRenderFlags.Blurred;
layer.Add(myGo);
Это можно сделать во время выполнения или при редактировании сцены. Если вы решите назначить сценарий во время выполнения, убедитесь, что OutlineEffect.OutlineResources инициализирован. Отключение сценария OutlineEffect отключает создание контуров для камеры (и освобождает все используемые ресурсы). Несколько сценариев OutlineEffect могут совместно использовать отображаемые слои контуров. Для достижения этой цели назначьте один и тот же набор слоев всем экземплярам OutlineEffect:
var effect1 = camera1.GetComponent<OutlineEffect>();
var effect2 = camera2.GetComponent<OutlineEffect>();
// Make effect1 share its layers with effect2.
effect1.ShareLayersWith(effect2);
Конутры для объектов (Built-in)
Добавьте скрипт OutlineBehaviour к объектам, которые должны быть выделены (в режиме редактирования или во время выполнения). Убедитесь, что параметр OutlineBehaviour.OutlineResources инициализирован. Вы можете настроить параметры контура, либо с помощью инспектора Unity, либо с помощью script. Объекты с назначенным параметром OutlineBehaviour отображают контуры на всех камерах.
Требования
Версия Unity 2018.4 или выше
Поддерживает Unity Post-processing Stack v2
Поддерживает Universal Render Pipeline
Поддерживает XR (Multi Pass, Single Pass Instanced)
Поддерживает Unity Post-processing Stack v2
Поддерживает Universal Render Pipeline
Поддерживает XR (Multi Pass, Single Pass Instanced)
Поддерживаемые платформы:
- Автономный режим для Windows / Mac
- Android
- iOS
- WebGL
- Другие платформы не проверялись