Skip to main content

Network Trigger System

1. Overview​

The Network Trigger System is a fundamental component of the HoloMIT networking architecture. It allows developers to invoke events across all connected clients (RPC-like behavior) by using the EventManagerController.

Each trigger is identified by a unique NetworkId (inherited from NetworkIdBehaviour), ensuring that when a trigger is activated on one client, the correct object on all other clients reacts accordingly.


2. NetworkTrigger (Base Component)​

The NetworkTrigger is the simplest form of networked event. It fires a UnityEvent with no parameters across the network.

2.1. Inspector Reference​

Figure 1: The NetworkTrigger component. Use the "OnTrigger" UnityEvent to link local logic.

Properties​

  • OnTrigger (UnityEvent): The event that will be executed locally and replicated on all other clients.

2.2. Public API​

  • public virtual void Trigger(): The main method to activate the trigger. Call this from code or UnityEvents to broadcast the action.

3. Typed Triggers (Data Propagation)​

For cases where you need to send specific data along with the trigger (e.g., a switch state, a score, or a message), HoloMIT provides several specialized triggers:

3.1. NetworkBoolTrigger​

Used for binary states (On/Off, True/False).

  • Event: UnityEvent<bool> OnTrigger
  • Method: Trigger(bool _data)

3.2. NetworkIntTrigger​

Used for numeric values (IDs, counters, levels).

  • Event: UnityEvent<int> OnTrigger
  • Method: Trigger(int _data) or Trigger() (uses the Data field defined in inspector).

3.3. NetworkStringTrigger​

Used for text-based data.

  • Event: UnityEvent<string> OnTrigger
  • Method: Trigger(string _data) or Trigger().

3.4. NetworkByteTrigger​

Used for raw data transmission (byte arrays).

  • Event: UnityEvent<byte[]> OnTrigger
  • Method: Trigger(byte[] _data) or Trigger().

4. How to use (Step-by-Step)​

  1. Attach the desired trigger component (e.g., NetworkBoolTrigger) to a GameObject.
  2. Ensure the GameObject has a unique Network ID (managed by NetworkIdBehaviour).
  3. In the Inspector, add a listener to the OnTrigger event.
  4. To fire the trigger from another script:
    public NetworkBoolTrigger myTrigger;

    void ToggleState(bool state) {
    myTrigger.Trigger(state); // This will execute on ALL clients
    }

5. Common Pitfalls​

  • Missing NetworkId: Triggers rely on NetworkId to find their counterpart on other clients. If two objects have the same ID or no ID, the trigger will fail or target the wrong object.
  • Registration: Triggers automatically register their message types in Awake(). If you instantiate a trigger and try to use it immediately, ensure Awake has finished.