using System; using System.Reflection; using FishNet.Managing; using FishNet.Object; using FishNet.Transporting; using FishNet.Transporting.Multipass; using FishNet.Transporting.Tugboat; using log4net; using Unity.VisualScripting; using UnityEngine; using UnityEngine.SceneManagement; public class StartUp : MonoBehaviour { #region Fields private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); [SerializeField] private NetworkObject lobbyNetworkPrefab; private NetworkManager networkManager; #endregion private void Start() { networkManager = GetComponent(); Multipass mp = GetComponent(); #if UNITY_WEBGL && !UNITY_EDITOR mp.SetClientTransport(); #else mp.SetClientTransport(); #endif networkManager.ServerManager.OnServerConnectionState += ServerStateChanged; } #region Events private void ServerStateChanged(ServerConnectionStateArgs args) { if (args.ConnectionState != LocalConnectionState.Started) { Log.Debug("Server not yet started."); return; } if (!networkManager.ServerManager.OneServerStarted()) { Log.Info("More than one server available."); return; } Log.Debug("Instantiating networked lobby."); NetworkObject nob = Instantiate(lobbyNetworkPrefab); // TODO: Might not be necessary Scene scene = SceneManager.GetSceneByName("OnlineLobby"); SceneManager.MoveGameObjectToScene(nob.gameObject, scene); networkManager.ServerManager.Spawn(nob.gameObject); } #endregion }