|
1 | | -# 1 Description |
2 | | -`MonoAlphaModifier` lets you control the transparency of various objects, including sprites and particle systems. Its logic is similar to Unity's `CanvasGroup`: it allows you to adjust the alpha value for a group of objects simultaneously, simplifying the management of visual effects. |
| 1 | +# **1. Description** |
3 | 2 |
|
4 | | -- Controls the transparency of multiple objects within the `MonoAlphaModifier`. |
5 | | -- Supports nested objects with `MonoAlphaModifier` and combines their alpha values for child objects. |
| 3 | +`MonoAlphaModifier` is a component for controlling the transparency of visual objects in Unity. |
6 | 4 |
|
7 | | -# 2 How to Use |
8 | | -## 2.1 UnityEditor |
9 | | -Add the MonoAlphaModifier component to an object. |
| 5 | +- It manages the transparency of any supported visual components through automatically collected handlers (strategies). |
| 6 | +- It can control a single object or an entire hierarchy branch. |
| 7 | +- It supports hierarchical behavior: a parent’s alpha value affects all child modifiers. |
10 | 8 |
|
11 | | -Choose one of the two options in the component's context menu: |
| 9 | +--- |
12 | 10 |
|
13 | | -`Alpha for this Object` - controls the transparency only for the current object. |
| 11 | +# **2.2 Runtime Behavior** |
14 | 12 |
|
15 | | -`Alpha for this Branch` - controls the transparency for the current object and all its child objects. |
| 13 | +`MonoAlphaModifier` automatically maintains a correct hierarchy: |
16 | 14 |
|
17 | | -## 2.2 Scripts |
18 | | -To control transparency, use the `Alpha` property of the `MonoAlphaModifier` component. |
| 15 | +- When created, enabled, or moved, the component searches for a parent `MonoAlphaModifier`. |
| 16 | +- When removed or re‑parented, all links are rebuilt correctly. |
| 17 | +- Any hierarchy change immediately updates the transparency of all affected objects. |
19 | 18 |
|
20 | | -To add a new `MonoAlphaModifier` object to the existing hierarchy at runtime, use the methods `FindParent()` or `SetParent(MonoAlphaModifier parent)`. |
| 19 | +Transparency logic: |
21 | 20 |
|
22 | | -To remove an object from the hierarchy, use the `RemoveParent()` method. |
| 21 | +- Each collected visual component receives its own handler that knows how to apply alpha (e.g., SpriteRenderer, ParticleSystem, Image, etc.). |
| 22 | +- The modifier’s own `Alpha` value is multiplied by the parent’s alpha, forming `TotalAlpha`, which is applied to all collected handlers. |
23 | 23 |
|
| 24 | +--- |
24 | 25 |
|
25 | | -# 1. Описание |
26 | | -MonoAlphaModifier позволяет контролировать прозрачность различных объектов, включая спрайты и системы частиц. Его логика схожа с `CanvasGroup` в Unity: он позволяет изменять альфа-значение для группы объектов одновременно, что упрощает управление визуальными эффектами. |
| 26 | +# **3. Usage** |
27 | 27 |
|
28 | | -- Позволяет управлять прозрачностью сразу нескольких объектов, которые находятся внутри `MonoAlphaModifier`. |
29 | | -- Поддерживает вложенные объекты с `MonoAlphaModifier` и комбинирует их альфа-значения для дочерних объектов. |
| 28 | +## **3.1 Editor** |
30 | 29 |
|
31 | | -# 2. Как использовать. |
32 | | -## 2.1 UnityEditor |
| 30 | +1. Add the `MonoAlphaModifier` component to a GameObject. |
| 31 | +2. In the component’s context menu, choose: |
| 32 | + - **Collect for Object** — collect handlers only for this object. |
| 33 | + - **Collect for Branch** — collect handlers for this object and all its children. |
| 34 | +3. In the `Alpha Strategies` list, adjust transparency limits for collected components if needed. |
33 | 35 |
|
34 | | -1. Добавить компонент `MonoAlphaModifier` на объект |
35 | | -2. Выбрать одну из двух опций в контекстном меню компонента |
36 | | -2.1 `Alpha for this Object` - компонент будет контролировать прозрачность только для текущего объекта, к которому прикреплён |
37 | | -2.2 `Alpha for this Branch` - компонент будет контролировать прозрачность для текущего и всех дочерних объектов. |
| 36 | +## **3.2 Code** |
38 | 37 |
|
39 | | -## 2.2 Scripts |
| 38 | +To control transparency from scripts, simply assign a value to the `Alpha` property. |
40 | 39 |
|
41 | | -Для управления прозрачностью используйте свойство `Alpha` компонента `MonoAlphaModifier`. |
| 40 | +- **Alpha** — the modifier’s own transparency value. |
| 41 | +- **TotalAlpha** — the final transparency value after applying all parent modifiers. |
42 | 42 |
|
43 | | -Если во время выполнения необходимо добавить новый объект `MonoAlphaModifier` в существующую иерархию, используйте методы `FindParent()` или `SetParent(MonoAlphaModifier parent)`. |
| 43 | +To add support for a new type of visual component: |
44 | 44 |
|
45 | | -Для удаления объекта из иерархии используйте метод `RemoveParent()`. |
| 45 | +1. Create a class implementing `IAlphaModifierStrategy`. |
| 46 | +2. Add the corresponding `builder` to `StrategyBuildContext` so it is automatically included during component scanning. |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | +# **1. Описание** |
| 53 | + |
| 54 | +MonoAlphaModifier — компонент для управления прозрачностью визуальных объектов в Unity. |
| 55 | +- Управляет прозрачностью любых визуальных компонентов через собранные обработчики (стратегии). |
| 56 | +- Может контролировать конкретный объект или всю ветку (в иерархии). |
| 57 | +- Поддерживает иерархию: альфа родителя влияет на дочерние модификаторы. |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +# **2. Поведение в рантайме** |
| 62 | + |
| 63 | +`MonoAlphaModifier` автоматически поддерживает иерархию: |
| 64 | +- При создании, активации или перемещении компонент ищет родительский `MonoAlphaModifier`. |
| 65 | +- При удалении связи так же корректно перестраиваются. |
| 66 | +- При изменении иерархии прозрачность объектов сразу же обновляется, учитывая новую иерархию. |
| 67 | + |
| 68 | +Логика изменения прозрачности: |
| 69 | +- Для каждого собранного компонента создаётся свой обработчик-стратегия, знающий как менять его прозрачность, будто то Sprite, ParticleSystem или Image. |
| 70 | +- Собственное значение `Alpha` умножается на значение родителя формируя `TotalAlpha`, которая применяется как множитель для всех собранных обработчиков. |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +# **3. Использование** |
| 75 | + |
| 76 | +## **3.1 Редактор** |
| 77 | +1. Добавить компонент `MonoAlphaModifier` на объект. |
| 78 | +2. Выбрать в контекстом меню компонента: |
| 79 | +2.1 `Collect for Object` - для контроля прозрачности текущего объекта |
| 80 | +2.2 `Collect for Branch` - для контроля прозрачности текущего объекта и дочерних. |
| 81 | +3. В списке `Alpha Strategies` при необходимости указать ограничение прозрачности для всех собранных компонентов. |
| 82 | + |
| 83 | +## **3.2 Код** |
| 84 | + |
| 85 | +Для управления прозрачностью через скрипты достаточно задать значение свойства `Alpha`. |
| 86 | +- `Alpha` — собственное значение модификатора. |
| 87 | +- `TotalAlpha` — итоговое значение с учётом всех родительских модификаторов. |
| 88 | +Чтобы добавить поддержку нового типа визуального компонента: |
| 89 | +1. Создать класс, реализующий `IAlphaModifierStrategy`. |
| 90 | +2. Добавить соответствующий `builder` в `StrategyBuildContext`, чтобы он автоматически собирался при сканировании объектов. |
| 91 | + |
| 92 | +--- |
0 commit comments