void Awake() { var variable = DynamicAtoms.CreateVariable <T, V, E1, E2>(CreateChangedEvent, CreateChangedWithHistoryEvent); if (variable.Changed != null) { if (Listener != null) { Listener.GameEvent = variable.Changed; Listener.GameEvent.RegisterListener(Listener); } } if (variable.ChangedWithHistory != null) { if (ListenerWithHistory != null) { ListenerWithHistory.GameEvent = variable.ChangedWithHistory; ListenerWithHistory.GameEvent.RegisterListener(ListenerWithHistory); } } if (OnVariableCreate != null) { OnVariableCreate.Do(variable); } if (OnVariableCreateWithGO != null) { OnVariableCreateWithGO.Do(variable, gameObject); } }