Skip to content

Commit a0a2928

Browse files
committed
2 parents 84a02fb + 235a83e commit a0a2928

File tree

1 file changed

+75
-28
lines changed

1 file changed

+75
-28
lines changed

README.md

Lines changed: 75 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,92 @@
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**
32

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.
64

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.
108

11-
Choose one of the two options in the component's context menu:
9+
---
1210

13-
`Alpha for this Object` - controls the transparency only for the current object.
11+
# **2.2 Runtime Behavior**
1412

15-
`Alpha for this Branch` - controls the transparency for the current object and all its child objects.
13+
`MonoAlphaModifier` automatically maintains a correct hierarchy:
1614

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.
1918

20-
To add a new `MonoAlphaModifier` object to the existing hierarchy at runtime, use the methods `FindParent()` or `SetParent(MonoAlphaModifier parent)`.
19+
Transparency logic:
2120

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.
2323

24+
---
2425

25-
# 1. Описание
26-
MonoAlphaModifier позволяет контролировать прозрачность различных объектов, включая спрайты и системы частиц. Его логика схожа с `CanvasGroup` в Unity: он позволяет изменять альфа-значение для группы объектов одновременно, что упрощает управление визуальными эффектами.
26+
# **3. Usage**
2727

28-
- Позволяет управлять прозрачностью сразу нескольких объектов, которые находятся внутри `MonoAlphaModifier`.
29-
- Поддерживает вложенные объекты с `MonoAlphaModifier` и комбинирует их альфа-значения для дочерних объектов.
28+
## **3.1 Editor**
3029

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.
3335

34-
1. Добавить компонент `MonoAlphaModifier` на объект
35-
2. Выбрать одну из двух опций в контекстном меню компонента
36-
2.1 `Alpha for this Object` - компонент будет контролировать прозрачность только для текущего объекта, к которому прикреплён
37-
2.2 `Alpha for this Branch` - компонент будет контролировать прозрачность для текущего и всех дочерних объектов.
36+
## **3.2 Code**
3837

39-
## 2.2 Scripts
38+
To control transparency from scripts, simply assign a value to the `Alpha` property.
4039

41-
Для управления прозрачностью используйте свойство `Alpha` компонента `MonoAlphaModifier`.
40+
- **Alpha** — the modifier’s own transparency value.
41+
- **TotalAlpha** — the final transparency value after applying all parent modifiers.
4242

43-
Если во время выполнения необходимо добавить новый объект `MonoAlphaModifier` в существующую иерархию, используйте методы `FindParent()` или `SetParent(MonoAlphaModifier parent)`.
43+
To add support for a new type of visual component:
4444

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

Comments
 (0)