英文原文:
https://mirror-networking.gitbook.io/docs/components/network-room-manager
请查看 Mirror 文件夹中示例文件夹中的 Room 示例。
Network Room Manager是一种专门的网络管理器,在进入游戏的主要游戏场景之前提供一个多人房间。它允许你建立一个带有以下内容的网络:
- 最大玩家限制
- 当所有玩家都准备好时自动开始
- 游戏开始后锁定,防止迟到者
- 玩家在房间内选择选项的可定制方式
Room Player Prefab
- 每个玩家一个
- 在客户端连接或添加player时创建
- 持续到客户端断开连接
- 保存就绪标志和配置数据
- 处理房间内的命令
- 必须使用 Network Room Player 组件
Player Prefab
- 每个玩家一个
- 游戏场景开始时创建
- 离开游戏场景时销毁
- 处理游戏中的命令
属性
-
Show Room GUI
显示房间的默认 OnGUI 控件。 -
Min Players
开始游戏所需的最少玩家人数。 -
Room Player Prefab
玩家进入房间时为他们创建的预制件(需要 Network Room Player 组件)。 -
Room Scene
用于房间的场景。 -
Gameplay Scene
用于主游戏的场景。 -
pendingPlayers
包含准备开始游戏的玩家的列表。 -
roomSlots
管理房间中已连接客户端的插槽的列表。 -
allPlayersReady
Bool 指示是否所有玩家都准备好开始游戏。当玩家调用 CmdChangeReadyState 指示真或假时,此值会发生变化,并且会在新客户端连接时设置为假。
函数
服务器虚拟方法
public virtual void OnRoomStartHost() {}
public virtual void OnRoomStopHost() {}
public virtual void OnRoomStartServer() {}
public virtual void OnRoomServerConnect(NetworkConnection conn) {}
public virtual void OnRoomServerDisconnect(NetworkConnection conn) {}
public virtual void OnRoomServerSceneChanged(string sceneName) {}
public virtual GameObject OnRoomServerCreateRoomPlayer(NetworkConnection conn)
{
return null;
}
public virtual GameObject OnRoomServerCreateGamePlayer(NetworkConnection conn)
{
return null;
}
public virtual bool OnRoomServerSceneLoadedForPlayer(GameObject roomPlayer, GameObject gamePlayer)
{
return true;
}
public virtual void OnRoomServerPlayersReady()
{
ServerChangeScene(GameplayScene);
}
客户端虚拟方法
public virtual void OnRoomClientEnter() {}
public virtual void OnRoomClientExit() {}
public virtual void OnRoomClientConnect(NetworkConnection conn) {}
public virtual void OnRoomClientDisconnect(NetworkConnection conn) {}
public virtual void OnRoomStartClient() {}
public virtual void OnRoomStopClient() {}
public virtual void OnRoomClientSceneChanged(NetworkConnection conn) {}
public virtual void OnRoomClientAddPlayerFailed() {}