using System.Collections; using System.Collections.Generic; using UnityEngine; using Normal.Realtime; using Normal.Realtime.Serialization; using UnityEngine.Events; [RealtimeModel] public partial class SyncEventModel { [RealtimeProperty(1, true, true)] private int _trigger; } public class SyncEvent : RealtimeComponent { public UnityEvent OnTrigger; protected override void OnRealtimeModelReplaced(SyncEventModel previousModel, SyncEventModel currentModel) { if (previousModel != null) { previousModel.triggerDidChange -= OnTriggerEvent; } if (currentModel != null) { currentModel.triggerDidChange += OnTriggerEvent; } } void OnTriggerEvent(SyncEventModel model, int trigger) { OnTrigger.Invoke(); } [ContextMenu("Trigger Event")] public void TriggerEvent() { if (model == null) return; model.trigger++; } }