using Netcode.Transports.Facepunch; using System; using Unity.Netcode; using Unity.Netcode.Transports.UTP; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class NetworkSetup : MonoBehaviour { [SerializeField] private Button LocalBtn; [SerializeField] private Button SteamBtn; [SerializeField] private Button OfflineBtn; [SerializeField] private GameObject ButtonsHolder; [SerializeField] private GameObject LoadingText; public static ServerType serverType = ServerType.NotSelected; private void OnEnable() { OfflineBtn.onClick.AddListener(() => { StartLocalServer(); serverType = ServerType.Offline; }); LocalBtn.onClick.AddListener(()=> { StartLocalServer(); serverType = ServerType.Local; }); SteamBtn.onClick.AddListener(() => { StartSteamServer(); serverType = ServerType.Steam; }); } private void StartLocalServer() { LoadingText.SetActive(true); ButtonsHolder.SetActive(false); var transport = NetworkManager.Singleton.gameObject.AddComponent(); NetworkManager.Singleton.NetworkConfig.NetworkTransport = transport; NextScene(); } private void StartSteamServer() { LoadingText.SetActive(true); ButtonsHolder.SetActive(false); var transport = NetworkManager.Singleton.gameObject.AddComponent(); NetworkManager.Singleton.NetworkConfig.NetworkTransport = transport; NextScene(); } private void NextScene() { int currentScene = SceneManager.GetActiveScene().buildIndex; SceneManager.LoadScene(++currentScene); } } public enum ServerType { NotSelected, Offline, Local, Steam }