创建大厅
创建新的大厅时,玩家可以通过创建调用设置以下属性:
- 大厅名称(必需)
- 大厅可见性(公开还是私人)
- 大厅大小(最大玩家人数)
- 在代码中,这被称为最大玩家数。
- 密码
- 加入大厅时所需输入的 8 至 64 位字符密码。
- 初始自定义大厅数据
- 这可以包括任意数据,例如地图 ID 和游戏模式。
- 可以为字符串或数值形式的大厅数据建立索引,以便在查询时基于这些索引进行筛选和排序。
- 初始(厅主)玩家数据
- 例如,玩家显示名称、技能和角色。
注意:创建大厅时,玩家会自动成为厅主玩家。
创建公开大厅
公开大厅无需输入大厅代码即可加入,并会显示在查询结果中,供任何玩家加入。
以下代码示例展示了如何创建公开大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = false;
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
创建私人大厅
私人大厅永远不会显示在查询结果中,新玩家需要手动输入大厅代码或 ID 才能加入。
以下代码示例展示了如何创建私人大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = true;
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
创建包含标准非索引数据的大厅
创建请求和后续的更新请求都可以包括大厅数据。
以下代码示例展示了如何创建包含标准非索引数据的大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
{
"ExamplePublicLobbyData", new DataObject(
visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
value: "ExamplePublicLobbyData")
},
};
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
创建包含索引字符串数据的大厅
以下代码示例展示了如何创建包含索引字符串数据的大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
{
"GameMode", new DataObject(
visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
value: "Conquest",
index: DataObject.IndexOptions.S1)
},
};
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
创建包含索引数值数据的大厅
以下代码示例展示了如何创建包含索引数值数据的大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
{
"MinimumSkillLevel", new DataObject(
visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
value: "25",
index: DataObject.IndexOptions.N1)
},
};
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
创建包含厅主玩家数据的大厅
与大厅数据一样,厅主玩家数据也可以包含在创建请求中,而不必通过单独的更新请求来进行添加。
以下代码示例展示了如何创建包含厅主玩家数据的大厅:
C#
string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
// Ensure you sign-in before calling Authentication Instance.
// See IAuthenticationService interface.
options.Player = new Player(
id: AuthenticationService.Instance.PlayerId,
data: new Dictionary<string, PlayerDataObject>()
{
{
"ExampleMemberPlayerData", new PlayerDataObject(
visibility: PlayerDataObject.VisibilityOptions.Member, // Visible only to members of the lobby.
value: "ExampleMemberPlayerData")
}
});
Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);
活动大厅与不活动大厅
如果大厅在过去 30 秒内没有更新或发送心跳请求,系统会将大厅标记为不活动。您可以配置此超时期限。处于不活动状态的公开大厅不会显示在查询结果中,并且系统会自动删除处于不活动状态的公开大厅和私人大厅。通过更新或发送心跳请求,可以重新激活处于不活动状态的大厅。
由于每 30 秒只允许发送 5 个心跳请求,因此用户同时只能托管 5 个大厅。有关更多信息,请参阅针对大厅进行心跳检测。