Модуль Reactive содержит сериализуемые реактивные свойства для float, int и bool, которые можно хранить в полях Unity-объектов и связывать с UnityEvent.
ReactivePropertyFloatReactivePropertyIntReactivePropertyBool- типизированные события
UnityEventFloat,UnityEventInt,UnityEventBool
- Нужно хранить значение и реагировать на его изменение без написания отдельного
MonoBehaviour. - Нужно подписывать Inspector-события на изменение простого значения.
- Нужно при загрузке данных установить значение без немедленного вызова событий.
У всех трёх типов одинаковый базовый контракт:
CurrentValue- текущее значение только для чтенияValue- свойство чтения и записи; приsetвызываетOnChangedOnChanged- типизированныйUnityEventAddListener(...),RemoveListener(...),RemoveAllListeners()- удобные обёртки надUnityEventOnNext(value)- установить значение и уведомить подписчиковSetValueWithoutNotify(value)- записать значение без событияForceNotify()- повторно отправить текущее значение вOnChanged
[SerializeField] private ReactivePropertyInt health = new(100);
private void Awake()
{
health.AddListener(OnHealthChanged);
}
private void OnHealthChanged(int currentHealth)
{
Debug.Log($"Health changed: {currentHealth}");
}
public void ApplyDamage(int amount)
{
health.Value -= amount;
}- Модуль не реализует полноценные reactive-цепочки, operators или
IObservable. - В текущей сборке есть только реализации для
float,intиbool. - Это сериализуемые utility-типы, а не отдельные
MonoBehaviourкомпоненты.