文档

支持

Lobby

Lobby

创建大厅

Create a new lobby with customizable properties including name, visibility, capacity, password protection, and custom data.
阅读时间3 分钟最后更新于 1 个月前

创建新的大厅时,玩家可以通过创建调用设置以下属性:
  • 大厅名称(必需
  • 大厅可见性(公开还是私人)
  • 大厅大小(最大玩家人数)
    • 在代码中,这被称为最大玩家数
  • 密码
    • 加入大厅时所需输入的 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 个大厅。有关更多信息,请参阅针对大厅进行心跳检测