/// <summary> /// Called when the local player object has been set up. /// <para>This happens after OnStartClient(), as it is triggered by an ownership message from the server. This is an appropriate place to activate components or functionality that should only be active for the local player, such as cameras and input.</para> /// </summary> public override void OnStartLocalPlayer() { Debug.Log("OnStartLocalPlayer"); // Set isLocalPlayer for this Player in UI for background shading playerUI.SetLocalPlayer(); // Activate the main panel CanvasUI.instance.mainPanel.gameObject.SetActive(true); }
/// <summary> /// Called on every NetworkBehaviour when it is activated on a client. /// <para>Objects on the host have this function called, as there is a local client on the host. The values of SyncVars on object are guaranteed to be initialized correctly with the latest state from the server when this function is called on the client.</para> /// </summary> public override void OnStartClient() { // Instantiate the player UI as child of the Players Panel playerUIObject = Instantiate(playerUIPrefab, CanvasUI.instance.playersPanel); PlayerUI playerUI = playerUIObject.GetComponent <PlayerUI>(); // wire up all events to handlers in PlayerUI OnPlayerNumberChanged = playerUI.OnPlayerNumberChanged; OnPlayerColorChanged = playerUI.OnPlayerColorChanged; OnPlayerDataChanged = playerUI.OnPlayerDataChanged; // Invoke all event handlers with the initial data from spawn payload OnPlayerNumberChanged.Invoke(playerNumber); OnPlayerColorChanged.Invoke(playerColor); OnPlayerDataChanged.Invoke(playerData); // Set isLocalPlayer for this Player in UI for background shading if (isLocalPlayer) { playerUI.SetLocalPlayer(); } }