using UnityEngine; namespace Unity.Netcode.Samples { /// /// Class to display helper buttons and status labels on the GUI, as well as buttons to start host/client/server. /// Once a connection has been established to the server, the local player can be teleported to random positions via a GUI button. /// public class BootstrapManager : MonoBehaviour { private void OnGUI() { GUILayout.BeginArea(new Rect(10, 10, 300, 300)); var networkManager = NetworkManager.Singleton; if (!networkManager.IsClient && !networkManager.IsServer) { if (GUILayout.Button("Host")) { networkManager.StartHost(); } if (GUILayout.Button("Client")) { networkManager.StartClient(); } if (GUILayout.Button("Server")) { networkManager.StartServer(); } } else { GUILayout.Label($"Mode: {(networkManager.IsHost ? "Host" : networkManager.IsServer ? "Server" : "Client")}"); // "Random Teleport" button will only be shown to clients if (networkManager.IsClient) { if (GUILayout.Button("Random Teleport")) { if (networkManager.LocalClient != null) { // Get `BootstrapPlayer` component from the player's `PlayerObject` if (networkManager.LocalClient.PlayerObject.TryGetComponent(out BootstrapPlayer bootstrapPlayer)) { // Invoke a `ServerRpc` from client-side to teleport player to a random position on the server-side bootstrapPlayer.RandomTeleportServerRpc(); } } } } } GUILayout.EndArea(); } } }