Comment on page
Network Room Manager
Please see the Room example in the Examples folder in your Mirror folder.
The Network Room Manager is a specialized type of Network Manager that provides a multiplayer room before entering the main play scene of the game. It allows you to set up a network with:
- A maximum player limit
- Automatic start when all players are ready
- Game is locked after start, preventing late joiners
- Customizable ways for players to choose options while in room
There are two types of player objects with the Network Room Manager:
Room Player Prefab
- One for each player
- Created when client connects, or player is added
- Persists until client disconnects
- Holds ready flag and configuration data
- Handles commands in the room
Player Prefab
- One for each player
- Created when game scene is started
- Destroyed when leaving game scene
- Handles commands in the game

- Show Room GUI Show the default OnGUI controls for the room.
- Min Players Minimum number of players needed to start a game.
- Room Player Prefab The prefab to create for players when they enter the room (requires Network Room Player component).
- Room Scene The scene to use for the room.
- Gameplay Scene The scene to use for main game play.
- pendingPlayers List that holds players that are ready to start playing.
- roomSlots List that manages the slots for connected clients in the room.
- allPlayersReady Bool indicating if all players are ready to start playing. This value changes as players invoke
CmdChangeReadyState
indicating true or false, and will be set false when a new client connects.
public virtual void OnRoomStartHost() { }
public virtual void OnRoomStopHost() { }
public virtual void OnRoomStartServer() { }
public virtual void OnRoomStopServer() { }
public virtual void OnRoomServerConnect(NetworkConnectionToClient conn) { }
public virtual void OnRoomServerDisconnect(NetworkConnectionToClient conn) { }
public virtual void OnRoomServerSceneChanged(string sceneName) { }
public virtual GameObject OnRoomServerCreateRoomPlayer(NetworkConnectionToClient conn) { return null; }
public virtual GameObject OnRoomServerCreateGamePlayer(NetworkConnectionToClient conn, GameObject roomPlayer) { return null; }
public virtual void OnRoomServerAddPlayer(NetworkConnectionToClient conn) { }
public virtual bool OnRoomServerSceneLoadedForPlayer(NetworkConnectionToClient conn, GameObject roomPlayer, GameObject gamePlayer) { return true; }
public virtual void OnRoomServerPlayersReady() { }
public virtual void OnRoomServerPlayersNotReady() { }
public virtual void ReadyStatusChanged() { }
public virtual void OnRoomClientEnter() { }
public virtual void OnRoomClientExit() { }
public virtual void OnRoomClientConnect() { }
public virtual void OnRoomClientDisconnect() { }
public virtual void OnRoomStartClient() { }
public virtual void OnRoomStopClient() { }
public virtual void OnRoomClientSceneChanged() { }
[Obsolete("OnRoomClientReady is obsolete, use OnRoomClientDisconnect or OnRoomStopClient.")]
public virtual void OnRoomClientAddPlayerFailed() {}
public virtual void OnGUI() { }
Last modified 25d ago