From 18549b831c1b172247869c0bea2e3054abb10957 Mon Sep 17 00:00:00 2001 From: miwarnec <16416509+miwarnec@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:51:06 +0200 Subject: [PATCH] breaking: syntax cleanup: .singleton renamed to .Instance --- .../Discovery/NetworkDiscoveryHUD.cs | 14 ++++----- Assets/Mirror/Components/NetworkRoomPlayer.cs | 8 ++--- Assets/Mirror/Components/RemoteStatistics.cs | 4 +-- Assets/Mirror/Core/NetworkManager.cs | 23 +++++++------- .../Scripts/AdditiveLevelsNetworkManager.cs | 7 ++++- .../Examples/AdditiveLevels/Scripts/Portal.cs | 2 +- .../Scripts/CanvasHUD.cs | 30 +++++++++---------- .../Scripts/CanvasReferencer.cs | 8 ++--- .../NetworkManagerCharacterSelection.cs | 8 ++++- .../Chat/Scripts/ChatAuthenticator.cs | 2 +- Assets/Mirror/Examples/Chat/Scripts/ChatUI.cs | 2 +- .../Mirror/Examples/Chat/Scripts/LoginUI.cs | 14 ++++----- .../EdgegapLobby/Scripts/UILobbyCreate.cs | 6 ++-- .../EdgegapLobby/Scripts/UILobbyList.cs | 6 ++-- .../EdgegapLobby/Scripts/UILobbyStatus.cs | 8 ++--- .../Scripts/Hex2DNetworkManager.cs | 5 +++- .../Scripts/Hex3DNetworkManager.cs | 5 +++- .../Scripts/CanvasController.cs | 2 +- .../Examples/PlayerTest/PlayerTestNetMan.cs | 5 +++- .../Room/Scripts/NetworkRoomManagerExt.cs | 7 ++++- .../TopDownShooter/Scripts/CanvasHUD.cs | 20 ++++++------- .../PlayerControllerRBBase.cs | 4 +-- .../CanvasNetworkManagerHUD.cs | 20 ++++++------- .../Examples/_Common/Scripts/Respawn.cs | 6 ++-- Assets/Mirror/Tests/Common/MirrorTest.cs | 2 +- .../NetworkManager/NetworkManagerTest.cs | 2 +- MirrorExamplesPipelineConverted.txt | 1 + 27 files changed, 125 insertions(+), 96 deletions(-) create mode 100644 MirrorExamplesPipelineConverted.txt diff --git a/Assets/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs b/Assets/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs index 92d2bf79820..e1bf8e092f4 100644 --- a/Assets/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs +++ b/Assets/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs @@ -39,7 +39,7 @@ void Reset() #if !UNITY_SERVER void OnGUI() { - if (NetworkManager.singleton == null) + if (NetworkManager.Instance == null) return; if (!NetworkClient.isConnected && !NetworkServer.active && !NetworkClient.active) @@ -64,7 +64,7 @@ void DrawGUI() if (GUILayout.Button("Start Host")) { discoveredServers.Clear(); - NetworkManager.singleton.StartHost(); + NetworkManager.Instance.StartHost(); networkDiscovery.AdvertiseServer(); } @@ -72,7 +72,7 @@ void DrawGUI() if (GUILayout.Button("Start Server")) { discoveredServers.Clear(); - NetworkManager.singleton.StartServer(); + NetworkManager.Instance.StartServer(); networkDiscovery.AdvertiseServer(); } @@ -102,7 +102,7 @@ void StopButtons() { if (GUILayout.Button("Stop Host")) { - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); networkDiscovery.StopDiscovery(); } } @@ -111,7 +111,7 @@ void StopButtons() { if (GUILayout.Button("Stop Client")) { - NetworkManager.singleton.StopClient(); + NetworkManager.Instance.StopClient(); networkDiscovery.StopDiscovery(); } } @@ -120,7 +120,7 @@ void StopButtons() { if (GUILayout.Button("Stop Server")) { - NetworkManager.singleton.StopServer(); + NetworkManager.Instance.StopServer(); networkDiscovery.StopDiscovery(); } } @@ -132,7 +132,7 @@ void StopButtons() void Connect(ServerResponse info) { networkDiscovery.StopDiscovery(); - NetworkManager.singleton.StartClient(info.uri); + NetworkManager.Instance.StartClient(info.uri); } public void OnDiscoveredServer(ServerResponse info) diff --git a/Assets/Mirror/Components/NetworkRoomPlayer.cs b/Assets/Mirror/Components/NetworkRoomPlayer.cs index a25b02949b3..737f450a7ed 100644 --- a/Assets/Mirror/Components/NetworkRoomPlayer.cs +++ b/Assets/Mirror/Components/NetworkRoomPlayer.cs @@ -43,7 +43,7 @@ public class NetworkRoomPlayer : NetworkBehaviour /// public virtual void Start() { - if (NetworkManager.singleton is NetworkRoomManager room) + if (NetworkManager.Instance is NetworkRoomManager room) { // NetworkRoomPlayer object must be set to DontDestroyOnLoad along with NetworkRoomManager // in server and all clients, otherwise it will be respawned in the game scene which would @@ -64,7 +64,7 @@ public virtual void Start() public virtual void OnDisable() { - if (NetworkClient.active && NetworkManager.singleton is NetworkRoomManager room) + if (NetworkClient.active && NetworkManager.Instance is NetworkRoomManager room) { // only need to call this on client as server removes it before object is destroyed room.roomSlots.Remove(this); @@ -81,7 +81,7 @@ public virtual void OnDisable() public void CmdChangeReadyState(bool readyState) { readyToBegin = readyState; - NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager; + NetworkRoomManager room = NetworkManager.Instance as NetworkRoomManager; if (room != null) { room.ReadyStatusChanged(); @@ -134,7 +134,7 @@ public virtual void OnGUI() if (!showRoomGUI) return; - NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager; + NetworkRoomManager room = NetworkManager.Instance as NetworkRoomManager; if (room) { if (!room.showRoomGUI) diff --git a/Assets/Mirror/Components/RemoteStatistics.cs b/Assets/Mirror/Components/RemoteStatistics.cs index 705cc9d5ed1..ca642ccad77 100644 --- a/Assets/Mirror/Components/RemoteStatistics.cs +++ b/Assets/Mirror/Components/RemoteStatistics.cs @@ -145,8 +145,8 @@ protected override void OnValidate() // public so it can also be called from tests (and be overwritten by users) public override void OnStartServer() { - NetworkStatistics = NetworkManager.singleton.GetComponent(); - if (NetworkStatistics == null) throw new Exception($"RemoteStatistics requires a NetworkStatistics component on {NetworkManager.singleton.name}!"); + NetworkStatistics = NetworkManager.Instance.GetComponent(); + if (NetworkStatistics == null) throw new Exception($"RemoteStatistics requires a NetworkStatistics component on {NetworkManager.Instance.name}!"); if (!requiresPasswordAuth) { diff --git a/Assets/Mirror/Core/NetworkManager.cs b/Assets/Mirror/Core/NetworkManager.cs index 198fec4e8a9..5c8b6f4c5eb 100644 --- a/Assets/Mirror/Core/NetworkManager.cs +++ b/Assets/Mirror/Core/NetworkManager.cs @@ -147,8 +147,11 @@ public class NetworkManager : MonoBehaviour [Header("Interpolation UI - Requires Editor / Dev Build")] public bool timeInterpolationGui = false; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static NetworkManager singleton => Instance; /// The one and only NetworkManager - public static NetworkManager singleton { get; internal set; } + public static NetworkManager Instance { get; internal set; } /// Number of active player objects across all connections on the server. public int numPlayers => NetworkServer.connections.Count(kv => kv.Value.identity != null); @@ -692,12 +695,12 @@ public virtual void ConfigureHeadlessFrameRate() bool InitializeSingleton() { - if (singleton != null && singleton == this) + if (Instance != null && Instance == this) return true; if (dontDestroyOnLoad) { - if (singleton != null) + if (Instance != null) { Debug.LogWarning("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will be destroyed."); Destroy(gameObject); @@ -705,8 +708,8 @@ bool InitializeSingleton() // Return false to not allow collision-destroyed second instance to continue. return false; } - //Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); - singleton = this; + //Debug.Log("NetworkManager created instance (DontDestroyOnLoad)"); + Instance = this; if (Application.isPlaying) { // Force the object to scene root, in case user made it a child of something @@ -717,8 +720,8 @@ bool InitializeSingleton() } else { - //Debug.Log("NetworkManager created singleton (ForScene)"); - singleton = this; + //Debug.Log("NetworkManager created instance (ForScene)"); + Instance = this; } // set active transport AFTER setting singleton. @@ -777,8 +780,8 @@ void RegisterClientMessages() public static void ResetStatics() { // call StopHost if we have a singleton - if (singleton) - singleton.StopHost(); + if (Instance) + Instance.StopHost(); // reset all statics startPositions.Clear(); @@ -788,7 +791,7 @@ public static void ResetStatics() networkSceneName = string.Empty; // and finally (in case it isn't null already)... - singleton = null; + Instance = null; } // virtual so that inheriting classes' OnDestroy() can call base.OnDestroy() too diff --git a/Assets/Mirror/Examples/AdditiveLevels/Scripts/AdditiveLevelsNetworkManager.cs b/Assets/Mirror/Examples/AdditiveLevels/Scripts/AdditiveLevelsNetworkManager.cs index 3309a88e8b3..c558b45c715 100644 --- a/Assets/Mirror/Examples/AdditiveLevels/Scripts/AdditiveLevelsNetworkManager.cs +++ b/Assets/Mirror/Examples/AdditiveLevels/Scripts/AdditiveLevelsNetworkManager.cs @@ -1,4 +1,6 @@ +using System; using System.Collections; +using Mirror.Examples.AssignAuthority; using UnityEngine; using UnityEngine.SceneManagement; @@ -7,7 +9,10 @@ namespace Mirror.Examples.AdditiveLevels [AddComponentMenu("")] public class AdditiveLevelsNetworkManager : NetworkManager { - public static new AdditiveLevelsNetworkManager singleton => (AdditiveLevelsNetworkManager)NetworkManager.singleton; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new AdditiveLevelsNetworkManager singleton => Instance; + public static new AdditiveLevelsNetworkManager Instance => (AdditiveLevelsNetworkManager)NetworkManager.Instance; [Header("Additive Scenes - First is start scene")] diff --git a/Assets/Mirror/Examples/AdditiveLevels/Scripts/Portal.cs b/Assets/Mirror/Examples/AdditiveLevels/Scripts/Portal.cs index 2a73c42bbd8..62a6f81bb54 100644 --- a/Assets/Mirror/Examples/AdditiveLevels/Scripts/Portal.cs +++ b/Assets/Mirror/Examples/AdditiveLevels/Scripts/Portal.cs @@ -69,7 +69,7 @@ IEnumerator SendPlayerToNewScene(GameObject player) conn.Send(new SceneMessage { sceneName = gameObject.scene.path, sceneOperation = SceneOperation.UnloadAdditive, customHandling = true }); // wait for fader to complete. - yield return new WaitForSeconds(AdditiveLevelsNetworkManager.singleton.fadeInOut.GetFadeInTime()); + yield return new WaitForSeconds(AdditiveLevelsNetworkManager.Instance.fadeInOut.GetFadeInTime()); // Remove player after fader has completed NetworkServer.RemovePlayerForConnection(conn, RemovePlayerOptions.Unspawn); diff --git a/Assets/Mirror/Examples/AutoLANClientController/Scripts/CanvasHUD.cs b/Assets/Mirror/Examples/AutoLANClientController/Scripts/CanvasHUD.cs index ce72cde89a0..38eec09a105 100644 --- a/Assets/Mirror/Examples/AutoLANClientController/Scripts/CanvasHUD.cs +++ b/Assets/Mirror/Examples/AutoLANClientController/Scripts/CanvasHUD.cs @@ -34,7 +34,7 @@ private void Start() buttonAuto.onClick.AddListener(ButtonAuto); //Update the canvas text if you have manually changed network managers address from the game object before starting the game scene - inputFieldAddress.text = NetworkManager.singleton.networkAddress; + inputFieldAddress.text = NetworkManager.Instance.networkAddress; //Adds a listener to the input field and invokes a method when the value changes. inputFieldAddress.onValueChanged.AddListener(delegate { OnValueChangedAddress(); }); @@ -45,7 +45,7 @@ private void Start() networkDiscovery = GameObject.FindAnyObjectByType(); #else // Deprecated in Unity 2023.1 - networkDiscovery = GameObject.FindObjectOfType(); + networkDiscovery = GameObject.FindObjectOfType(); #endif } @@ -75,14 +75,14 @@ public IEnumerator Waiter() } yield return new WaitForSeconds(1.0f); discoveredServers.Clear(); - // NetworkManager.singleton.onlineScene = SceneManager.GetActiveScene().name; + // NetworkManager.instance.onlineScene = SceneManager.GetActiveScene().name; if (runAsPlayerHost == true) { - NetworkManager.singleton.StartHost(); + NetworkManager.Instance.StartHost(); } else { - NetworkManager.singleton.StartServer(); + NetworkManager.Instance.StartServer(); } networkDiscovery.AdvertiseServer(); } @@ -92,7 +92,7 @@ void Connect(ServerResponse info) { infoText.text = "Connecting to: " + info.serverId; networkDiscovery.StopDiscovery(); - NetworkManager.singleton.StartClient(info.uri); + NetworkManager.Instance.StartClient(info.uri); } public void OnDiscoveredServer(ServerResponse info) @@ -105,8 +105,8 @@ public void ButtonHost() { SetupInfoText("Starting as host"); discoveredServers.Clear(); - //NetworkManager.singleton.onlineScene = SceneManager.GetActiveScene().name; - NetworkManager.singleton.StartHost(); + //NetworkManager.instance.onlineScene = SceneManager.GetActiveScene().name; + NetworkManager.Instance.StartHost(); networkDiscovery.AdvertiseServer(); } @@ -115,8 +115,8 @@ public void ButtonServer() { SetupInfoText("Starting as server."); discoveredServers.Clear(); - // NetworkManager.singleton.onlineScene = SceneManager.GetActiveScene().name; - NetworkManager.singleton.StartServer(); + // NetworkManager.instance.onlineScene = SceneManager.GetActiveScene().name; + NetworkManager.Instance.StartServer(); networkDiscovery.AdvertiseServer(); } @@ -134,17 +134,17 @@ public void ButtonStop() // stop host if host mode if (NetworkServer.active && NetworkClient.isConnected) { - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); } // stop client if client-only else if (NetworkClient.isConnected) { - NetworkManager.singleton.StopClient(); + NetworkManager.Instance.StopClient(); } // stop server if server-only else if (NetworkServer.active) { - NetworkManager.singleton.StopServer(); + NetworkManager.Instance.StopServer(); } networkDiscovery.StopDiscovery(); // we need to call setup canvas a second time in this function for it to update the abovee changes @@ -162,7 +162,7 @@ public void SetupCanvas() { // Here we will dump majority of the canvas UI - if (NetworkManager.singleton == null) + if (NetworkManager.Instance == null) { SetupInfoText("NetworkManager null"); return; @@ -199,7 +199,7 @@ public void SetupInfoText(string _info) // Invoked when the value of the text field changes. public void OnValueChangedAddress() { - NetworkManager.singleton.networkAddress = inputFieldAddress.text; + NetworkManager.Instance.networkAddress = inputFieldAddress.text; } } } diff --git a/Assets/Mirror/Examples/CharacterSelection/Scripts/CanvasReferencer.cs b/Assets/Mirror/Examples/CharacterSelection/Scripts/CanvasReferencer.cs index 408f329e86b..b527e0c0d51 100644 --- a/Assets/Mirror/Examples/CharacterSelection/Scripts/CanvasReferencer.cs +++ b/Assets/Mirror/Examples/CharacterSelection/Scripts/CanvasReferencer.cs @@ -4,7 +4,7 @@ using static Mirror.Examples.CharacterSelection.NetworkManagerCharacterSelection; namespace Mirror.Examples.CharacterSelection -{ +{ public class CanvasReferencer : MonoBehaviour { // Make sure to attach these Buttons in the Inspector @@ -25,7 +25,7 @@ private void Start() characterData = CharacterData.characterDataSingleton; if (characterData == null) { - Debug.Log("Add CharacterData prefab singleton into the scene."); + Debug.Log("Add CharacterData prefab Instance into the scene."); return; } @@ -73,7 +73,7 @@ public void ButtonGo() { createCharacterMessage = _characterMessage }; - NetworkManagerCharacterSelection.singleton.ReplaceCharacter(replaceCharacterMessage); + NetworkManagerCharacterSelection.Instance.ReplaceCharacter(replaceCharacterMessage); sceneReferencer.CloseCharacterSelection(); } else @@ -191,4 +191,4 @@ public void LoadData() } } } -} \ No newline at end of file +} diff --git a/Assets/Mirror/Examples/CharacterSelection/Scripts/NetworkManagerCharacterSelection.cs b/Assets/Mirror/Examples/CharacterSelection/Scripts/NetworkManagerCharacterSelection.cs index 7fe1efc535a..0a4e68bd0b8 100644 --- a/Assets/Mirror/Examples/CharacterSelection/Scripts/NetworkManagerCharacterSelection.cs +++ b/Assets/Mirror/Examples/CharacterSelection/Scripts/NetworkManagerCharacterSelection.cs @@ -1,4 +1,7 @@ +using System; +using Mirror.Examples.AssignAuthority; using UnityEngine; +using Random = UnityEngine.Random; namespace Mirror.Examples.CharacterSelection { @@ -11,7 +14,10 @@ public class NetworkManagerCharacterSelection : NetworkManager // Either of these allow selecting character after spawning in too. public bool SpawnAsCharacter = true; - public static new NetworkManagerCharacterSelection singleton => (NetworkManagerCharacterSelection)NetworkManager.singleton; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new NetworkManagerCharacterSelection singleton => Instance; + public static new NetworkManagerCharacterSelection Instance => (NetworkManagerCharacterSelection)NetworkManager.Instance; private CharacterData characterData; public override void Awake() diff --git a/Assets/Mirror/Examples/Chat/Scripts/ChatAuthenticator.cs b/Assets/Mirror/Examples/Chat/Scripts/ChatAuthenticator.cs index efc07592397..2c05f7449bd 100644 --- a/Assets/Mirror/Examples/Chat/Scripts/ChatAuthenticator.cs +++ b/Assets/Mirror/Examples/Chat/Scripts/ChatAuthenticator.cs @@ -200,7 +200,7 @@ public void OnAuthResponseMessage(AuthResponseMessage msg) // Authentication has been rejected // StopHost works for both host client and remote clients - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); // Do this AFTER StopHost so it doesn't get cleared / hidden by OnClientDisconnect LoginUI.instance.errorText.text = msg.message; diff --git a/Assets/Mirror/Examples/Chat/Scripts/ChatUI.cs b/Assets/Mirror/Examples/Chat/Scripts/ChatUI.cs index e8c8d0f838d..da83ef29a6b 100644 --- a/Assets/Mirror/Examples/Chat/Scripts/ChatUI.cs +++ b/Assets/Mirror/Examples/Chat/Scripts/ChatUI.cs @@ -70,7 +70,7 @@ public void ExitButtonOnClick() { // StopHost calls both StopClient and StopServer // StopServer does nothing on remote clients - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); } // Called by UI element MessageField.OnValueChanged diff --git a/Assets/Mirror/Examples/Chat/Scripts/LoginUI.cs b/Assets/Mirror/Examples/Chat/Scripts/LoginUI.cs index a84e3dae4ef..620284916f4 100644 --- a/Assets/Mirror/Examples/Chat/Scripts/LoginUI.cs +++ b/Assets/Mirror/Examples/Chat/Scripts/LoginUI.cs @@ -24,22 +24,22 @@ void Awake() void Start() { // if we don't have a networkAddress, set a default one. - if (string.IsNullOrWhiteSpace(NetworkManager.singleton.networkAddress)) - NetworkManager.singleton.networkAddress = "localhost"; + if (string.IsNullOrWhiteSpace(NetworkManager.Instance.networkAddress)) + NetworkManager.Instance.networkAddress = "localhost"; // cache the original networkAddress for resetting if blank. - originalNetworkAddress = NetworkManager.singleton.networkAddress; + originalNetworkAddress = NetworkManager.Instance.networkAddress; } void Update() { // bidirectional sync of networkAddressInput and NetworkManager.networkAddress // Order of operations is important here...Don't switch the order of these steps. - if (string.IsNullOrWhiteSpace(NetworkManager.singleton.networkAddress)) - NetworkManager.singleton.networkAddress = originalNetworkAddress; + if (string.IsNullOrWhiteSpace(NetworkManager.Instance.networkAddress)) + NetworkManager.Instance.networkAddress = originalNetworkAddress; - if (networkAddressInput.text != NetworkManager.singleton.networkAddress) - networkAddressInput.text = NetworkManager.singleton.networkAddress; + if (networkAddressInput.text != NetworkManager.Instance.networkAddress) + networkAddressInput.text = NetworkManager.Instance.networkAddress; } // Called by UI element UsernameInput.OnValueChanged diff --git a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyCreate.cs b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyCreate.cs index 8425dc05ca8..41f6195ef29 100644 --- a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyCreate.cs +++ b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyCreate.cs @@ -13,7 +13,7 @@ public class UILobbyCreate : MonoBehaviour public Slider SlotSlider; public Button HostButton; public Button ServerButton; - private EdgegapLobbyKcpTransport _transport => (EdgegapLobbyKcpTransport)NetworkManager.singleton.transport; + private EdgegapLobbyKcpTransport _transport => (EdgegapLobbyKcpTransport)NetworkManager.Instance.transport; private void Awake() { @@ -35,13 +35,13 @@ private void Awake() { gameObject.SetActive(false); _transport.SetServerLobbyParams(LobbyName.text, (int)SlotSlider.value); - NetworkManager.singleton.StartHost(); + NetworkManager.Instance.StartHost(); }); ServerButton.onClick.AddListener(() => { gameObject.SetActive(false); _transport.SetServerLobbyParams(LobbyName.text, (int)SlotSlider.value); - NetworkManager.singleton.StartServer(); + NetworkManager.Instance.StartServer(); }); } void ValidateName() diff --git a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyList.cs b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyList.cs index 74a4a3b5e34..9e74786c21b 100644 --- a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyList.cs +++ b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyList.cs @@ -18,7 +18,7 @@ public class UILobbyList : MonoBehaviour public Text Error; private List _entries = new List(); - private EdgegapLobbyKcpTransport _transport => (EdgegapLobbyKcpTransport)NetworkManager.singleton.transport; + private EdgegapLobbyKcpTransport _transport => (EdgegapLobbyKcpTransport)NetworkManager.Instance.transport; private void Awake() { SearchInput.onValueChanged.AddListener(arg0 => @@ -49,8 +49,8 @@ private void Refresh() public void Join(LobbyBrief lobby) { - NetworkManager.singleton.networkAddress = lobby.lobby_id; - NetworkManager.singleton.StartClient(); + NetworkManager.Instance.networkAddress = lobby.lobby_id; + NetworkManager.Instance.StartClient(); } public void SetLobbies(LobbyBrief[] lobbies) diff --git a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs index 756711714d1..787c3426cdc 100644 --- a/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs +++ b/Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs @@ -28,20 +28,20 @@ void Awake() Refresh(); StopServer.onClick.AddListener(() => { - NetworkManager.singleton.StopServer(); + NetworkManager.Instance.StopServer(); }); StopHost.onClick.AddListener(() => { - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); }); StopClient.onClick.AddListener(() => { - NetworkManager.singleton.StopClient(); + NetworkManager.Instance.StopClient(); }); } private void Start() { - _transport = (EdgegapLobbyKcpTransport)NetworkManager.singleton.transport; + _transport = (EdgegapLobbyKcpTransport)NetworkManager.Instance.transport; } private void Update() { diff --git a/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex2DNetworkManager.cs b/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex2DNetworkManager.cs index d1eee2db868..2f7b08b669d 100644 --- a/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex2DNetworkManager.cs +++ b/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex2DNetworkManager.cs @@ -8,7 +8,10 @@ namespace Mirror.Examples.Hex2D public class Hex2DNetworkManager : NetworkManager { // Overrides the base singleton so we don’t have to cast to this type everywhere. - public static new Hex2DNetworkManager singleton => (Hex2DNetworkManager)NetworkManager.singleton; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new Hex2DNetworkManager singleton => Instance; + public static new Hex2DNetworkManager Instance => (Hex2DNetworkManager)NetworkManager.Instance; [Header("Spawns")] public GameObject spawnPrefab; diff --git a/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex3DNetworkManager.cs b/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex3DNetworkManager.cs index f9bd2db04d2..6dff4939779 100644 --- a/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex3DNetworkManager.cs +++ b/Assets/Mirror/Examples/HexSpatialHash/Scripts/Hex3DNetworkManager.cs @@ -7,7 +7,10 @@ namespace Mirror.Examples.Hex3D public class Hex3DNetworkManager : NetworkManager { // Overrides the base singleton so we don't have to cast to this type everywhere. - public static new Hex3DNetworkManager singleton => (Hex3DNetworkManager)NetworkManager.singleton; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new Hex3DNetworkManager singleton => Instance; + public static new Hex3DNetworkManager Instance => (Hex3DNetworkManager)NetworkManager.Instance; [Header("Spawns")] public GameObject spawnPrefab; diff --git a/Assets/Mirror/Examples/MultipleMatches/Scripts/CanvasController.cs b/Assets/Mirror/Examples/MultipleMatches/Scripts/CanvasController.cs index 7809269e858..9eb3603125f 100644 --- a/Assets/Mirror/Examples/MultipleMatches/Scripts/CanvasController.cs +++ b/Assets/Mirror/Examples/MultipleMatches/Scripts/CanvasController.cs @@ -491,7 +491,7 @@ void OnServerStartMatch(NetworkConnectionToClient conn) { playerConn.Send(new ClientMatchMessage { clientMatchOperation = ClientMatchOperation.Started }); - GameObject player = Instantiate(NetworkManager.singleton.playerPrefab); + GameObject player = Instantiate(NetworkManager.Instance.playerPrefab); player.GetComponent().matchId = matchId; NetworkServer.AddPlayerForConnection(playerConn, player); diff --git a/Assets/Mirror/Examples/PlayerTest/PlayerTestNetMan.cs b/Assets/Mirror/Examples/PlayerTest/PlayerTestNetMan.cs index 1f8606985cf..5abffaba6ea 100644 --- a/Assets/Mirror/Examples/PlayerTest/PlayerTestNetMan.cs +++ b/Assets/Mirror/Examples/PlayerTest/PlayerTestNetMan.cs @@ -15,7 +15,10 @@ public class PlayerTestNetMan : NetworkManager { // Overrides the base singleton so we don't // have to cast to this type everywhere. - public static new PlayerTestNetMan singleton => (PlayerTestNetMan)NetworkManager.singleton; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new PlayerTestNetMan singleton => Instance; + public static new PlayerTestNetMan Instance => (PlayerTestNetMan)NetworkManager.Instance; /// /// Runs on both Server and Client diff --git a/Assets/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs b/Assets/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs index 588387b3d38..66a8cf3ad01 100644 --- a/Assets/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs +++ b/Assets/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs @@ -1,3 +1,5 @@ +using System; +using Mirror.Examples.AssignAuthority; using UnityEngine; /* @@ -15,7 +17,10 @@ public class NetworkRoomManagerExt : NetworkRoomManager public GameObject rewardPrefab; public byte poolSize = 10; - public static new NetworkRoomManagerExt singleton => NetworkManager.singleton as NetworkRoomManagerExt; + // DEPRECATED 2025-07-29 + [Obsolete("Use .instance instead of .singleton")] + public static new NetworkRoomManagerExt singleton => Instance; + public static new NetworkRoomManagerExt Instance => NetworkManager.Instance as NetworkRoomManagerExt; /// /// This is called on the server when a networked scene finishes loading. diff --git a/Assets/Mirror/Examples/TopDownShooter/Scripts/CanvasHUD.cs b/Assets/Mirror/Examples/TopDownShooter/Scripts/CanvasHUD.cs index abb33719484..7712da88318 100644 --- a/Assets/Mirror/Examples/TopDownShooter/Scripts/CanvasHUD.cs +++ b/Assets/Mirror/Examples/TopDownShooter/Scripts/CanvasHUD.cs @@ -27,7 +27,7 @@ public class CanvasHUD : MonoBehaviour private void Start() { // Init the input field with Network Manager's network address. - inputNetworkAddress.text = NetworkManager.singleton.networkAddress; + inputNetworkAddress.text = NetworkManager.Instance.networkAddress; GetPort(); RegisterListeners(); @@ -111,7 +111,7 @@ private void StatusLabelsAndStopButtons() // Client only else if (NetworkClient.isConnected) { - statusText.text = $"Client: connected to {NetworkManager.singleton.networkAddress} via {Transport.active}"; + statusText.text = $"Client: connected to {NetworkManager.Instance.networkAddress} via {Transport.active}"; } } @@ -121,25 +121,25 @@ private void ShowConnectingStatus() startButtonsGroup.SetActive(false); statusLabelsGroup.SetActive(true); - statusText.text = "Connecting to " + NetworkManager.singleton.networkAddress + ".."; + statusText.text = "Connecting to " + NetworkManager.Instance.networkAddress + ".."; } private void OnClickStartHostButton() { canvasTopDown.PlaySoundButtonUI(); - NetworkManager.singleton.StartHost(); + NetworkManager.Instance.StartHost(); } private void OnClickStartServerButton() { canvasTopDown.PlaySoundButtonUI(); - NetworkManager.singleton.StartServer(); + NetworkManager.Instance.StartServer(); } private void OnClickStartClientButton() { canvasTopDown.PlaySoundButtonUI(); - NetworkManager.singleton.StartClient(); + NetworkManager.Instance.StartClient(); //ShowConnectingStatus(); } @@ -148,21 +148,21 @@ private void OnClickMainStopButton() canvasTopDown.PlaySoundButtonUI(); if (NetworkClient.active && NetworkServer.active) { - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); } if (NetworkClient.active) { - NetworkManager.singleton.StopClient(); + NetworkManager.Instance.StopClient(); } else { - NetworkManager.singleton.StopServer(); + NetworkManager.Instance.StopServer(); } } private void OnNetworkAddressChange() { - NetworkManager.singleton.networkAddress = inputNetworkAddress.text; + NetworkManager.Instance.networkAddress = inputNetworkAddress.text; } private void OnPortChange() diff --git a/Assets/Mirror/Examples/_Common/Controllers/PlayerControllerRB/PlayerControllerRBBase.cs b/Assets/Mirror/Examples/_Common/Controllers/PlayerControllerRB/PlayerControllerRBBase.cs index 21e5be2f3c8..48c76c4f425 100644 --- a/Assets/Mirror/Examples/_Common/Controllers/PlayerControllerRB/PlayerControllerRBBase.cs +++ b/Assets/Mirror/Examples/_Common/Controllers/PlayerControllerRB/PlayerControllerRBBase.cs @@ -324,8 +324,8 @@ public override void OnStopLocalPlayer() void Start() { - Application.targetFrameRate = NetworkManager.singleton.sendRate; - Time.fixedDeltaTime = 1f / NetworkManager.singleton.sendRate; + Application.targetFrameRate = NetworkManager.Instance.sendRate; + Time.fixedDeltaTime = 1f / NetworkManager.Instance.sendRate; } void Update() diff --git a/Assets/Mirror/Examples/_Common/Scripts/CanvasNetworkManagerHUD/CanvasNetworkManagerHUD.cs b/Assets/Mirror/Examples/_Common/Scripts/CanvasNetworkManagerHUD/CanvasNetworkManagerHUD.cs index b600e000a91..89773e82ad0 100644 --- a/Assets/Mirror/Examples/_Common/Scripts/CanvasNetworkManagerHUD/CanvasNetworkManagerHUD.cs +++ b/Assets/Mirror/Examples/_Common/Scripts/CanvasNetworkManagerHUD/CanvasNetworkManagerHUD.cs @@ -28,7 +28,7 @@ public class CanvasNetworkManagerHUD : MonoBehaviour private void Start() { // Init the input field with Network Manager's network address. - inputNetworkAddress.text = NetworkManager.singleton.networkAddress; + inputNetworkAddress.text = NetworkManager.Instance.networkAddress; GetPort(); RegisterListeners(); @@ -117,7 +117,7 @@ private void StatusLabelsAndStopButtons() // Client only else if (NetworkClient.isConnected) { - statusText.text = $"Client: connected to {NetworkManager.singleton.networkAddress} via {Transport.active}"; + statusText.text = $"Client: connected to {NetworkManager.Instance.networkAddress} via {Transport.active}"; mainStopButtonText.text = "Stop Client"; } @@ -133,23 +133,23 @@ private void ShowConnectingStatus() secondaryStopButton.gameObject.SetActive(false); - statusText.text = "Connecting to " + NetworkManager.singleton.networkAddress + ".."; + statusText.text = "Connecting to " + NetworkManager.Instance.networkAddress + ".."; mainStopButtonText.text = "Cancel Connection Attempt"; } private void OnClickStartHostButton() { - NetworkManager.singleton.StartHost(); + NetworkManager.Instance.StartHost(); } private void OnClickStartServerButton() { - NetworkManager.singleton.StartServer(); + NetworkManager.Instance.StartServer(); } private void OnClickStartClientButton() { - NetworkManager.singleton.StartClient(); + NetworkManager.Instance.StartClient(); //ShowConnectingStatus(); } @@ -157,22 +157,22 @@ private void OnClickMainStopButton() { if (NetworkClient.active) { - NetworkManager.singleton.StopClient(); + NetworkManager.Instance.StopClient(); } else { - NetworkManager.singleton.StopServer(); + NetworkManager.Instance.StopServer(); } } private void OnClickSecondaryStopButton() { - NetworkManager.singleton.StopHost(); + NetworkManager.Instance.StopHost(); } private void OnNetworkAddressChange() { - NetworkManager.singleton.networkAddress = inputNetworkAddress.text; + NetworkManager.Instance.networkAddress = inputNetworkAddress.text; } private void OnPortChange() diff --git a/Assets/Mirror/Examples/_Common/Scripts/Respawn.cs b/Assets/Mirror/Examples/_Common/Scripts/Respawn.cs index c5637744c00..0665d83e19c 100644 --- a/Assets/Mirror/Examples/_Common/Scripts/Respawn.cs +++ b/Assets/Mirror/Examples/_Common/Scripts/Respawn.cs @@ -7,8 +7,8 @@ public static class Respawn { public static void RespawnPlayer(bool respawn, byte respawnTime, NetworkConnectionToClient conn) { - // Use the NetworkManager static singleton to start a coroutine - NetworkManager.singleton.StartCoroutine(DoRespawn(respawn, respawnTime, conn)); + // Use the NetworkManager static instance to start a coroutine + NetworkManager.Instance.StartCoroutine(DoRespawn(respawn, respawnTime, conn)); } public static IEnumerator DoRespawn(bool respawn, byte respawnTime, NetworkConnectionToClient conn) @@ -34,7 +34,7 @@ public static IEnumerator DoRespawn(bool respawn, byte respawnTime, NetworkConne yield return new WaitForSeconds(respawnTime); // Respawn Player - fallback to Vector3.up * 5f to avoid spawning on another player. - Transform spawnPoint = NetworkManager.singleton.GetStartPosition(); + Transform spawnPoint = NetworkManager.Instance.GetStartPosition(); Vector3 position = spawnPoint != null ? spawnPoint.position : Vector3.up * 5f; Quaternion rotation = spawnPoint != null ? spawnPoint.rotation : Quaternion.identity; diff --git a/Assets/Mirror/Tests/Common/MirrorTest.cs b/Assets/Mirror/Tests/Common/MirrorTest.cs index 53fdf6e485b..9364c479d3c 100644 --- a/Assets/Mirror/Tests/Common/MirrorTest.cs +++ b/Assets/Mirror/Tests/Common/MirrorTest.cs @@ -48,7 +48,7 @@ public virtual void TearDown() GameObject.DestroyImmediate(transport.gameObject); Transport.active = null; - NetworkManager.singleton = null; + NetworkManager.Instance = null; } // create a tracked GameObject for tests without Networkidentity diff --git a/Assets/Mirror/Tests/Editor/NetworkManager/NetworkManagerTest.cs b/Assets/Mirror/Tests/Editor/NetworkManager/NetworkManagerTest.cs index 4baa6bf0466..8b4f3eae4db 100644 --- a/Assets/Mirror/Tests/Editor/NetworkManager/NetworkManagerTest.cs +++ b/Assets/Mirror/Tests/Editor/NetworkManager/NetworkManagerTest.cs @@ -92,7 +92,7 @@ public void ShutdownTest() Assert.That(NetworkManager.startPositionIndex, Is.Zero); Assert.That(NetworkManager.clientReadyConnection, Is.Null); Assert.That(NetworkManager.loadingSceneAsync, Is.Null); - Assert.That(NetworkManager.singleton, Is.Null); + Assert.That(NetworkManager.Instance, Is.Null); Assert.That(NetworkManager.networkSceneName, Is.Empty); } diff --git a/MirrorExamplesPipelineConverted.txt b/MirrorExamplesPipelineConverted.txt new file mode 100644 index 00000000000..551fbfab151 --- /dev/null +++ b/MirrorExamplesPipelineConverted.txt @@ -0,0 +1 @@ +Converted: 7/29/2025 10:41:30 PM \ No newline at end of file