Files
FORT-BO/Assets/Samples/Netcode for GameObjects/2.13.1/Bootstrap/Scripts/BootstrapManager.cs
T
2026-08-04 13:47:07 +03:00

59 lines
2.1 KiB
C#

using UnityEngine;
namespace Unity.Netcode.Samples
{
/// <summary>
/// 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.
/// </summary>
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();
}
}
}