Skip to main content
本主题描述如何在 XBOX 服务多人游戏中定义玩家角色。对于某些游戏会话,你可能希望将游戏角色(例如支援、医疗或突击)分配给特定的玩家。你还可能希望为可以填补特定游戏角色的玩家保留游戏位置。 通过使用 XBOX 服务角色功能,该服务可以跟踪为每个游戏角色分配了哪些玩家,并强制执行可以选择特定游戏角色的最大玩家数量。 角色最常见的用法是为游戏会话确定特定于游戏的角色。例如,你可以有一个需要一个或两个支援职业、至少一个坦克/重型职业和不超过五个突击职业的游戏模式。 在另一种可能的情况下,你可能希望指定游戏会话可以正好有四名游戏玩家、最多八名观众和恰好一名解说员。 你还可以使用角色为朋友保留位置,同时通过其他方式(例如会话浏览)填补剩余位置。

角色类型

角色类型表示一组角色定义。每个角色必须定义为角色类型的一部分。角色类型在多人游戏会话文档中定义。 一个玩家只能被分配同一角色类型中的一个角色。例如,如果”class”角色类型包括治疗、坦克和输出,则玩家只能被分配到其中一个角色。 你可以定义多个角色类型,并且玩家可以从每个角色类型中分配一个角色。在前面的场景中,选择治疗角色的玩家如果在单独的角色类型中定义了小队长角色,则也可以分配小队长角色。

角色类型属性

定义角色类型时,必须指定以下信息。
  • 角色类型的名称。名称必须为小写字母数字,且不超过 100 个字符。
  • 角色的定义。
  • 角色是否由所有者管理。
  • 角色的属性是否可以在会话生命周期内更改。
如果角色类型由所有者管理,则只有会话的所有者玩家才能分配该类型的角色。如果角色类型不由所有者管理,则玩家可以为自己分配角色。 只有为设置了 hasOwners 功能的会话,才能指定角色类型由所有者管理。
XBOX 服务 API (XSAPI) 目前不支持所有者为其他玩家分配角色。

角色属性

定义角色时,必须指定以下信息。
  • 角色的名称。名称必须为小写字母数字,且不超过 100 个字符。
  • 可以填补该角色的最大玩家数量。该值必须大于零。
  • 应填补该角色的目标玩家数量。该值必须大于零,且小于或等于可以填补该角色的最大玩家数量。
当玩家在会话中被分配角色时,前面的信息将记录在多人游戏会话文档中。 服务强制执行可以分配给角色的最大玩家数量,但不强制执行目标数量。

创建角色

角色和角色类型通常在会话模板中定义;有关详细信息,请参阅多人游戏会话模板。该服务支持在创建会话期间定义角色类型和角色,但 XSAPI 不支持。

在会话模板中定义角色类型和角色

你可以在 XBOX 服务配置期间创建会话模板时定义角色类型和角色。 有关角色类型和角色的信息使用以下格式在会话模板中指定为基级 roleTypes 元素。

检索多人游戏会话的角色信息

你可以从多人游戏会话或多人游戏搜索句柄中获取有关角色类型、角色以及分配给每个角色的玩家数量的信息。 在 XSAPI 中,有关角色类型和角色的信息存储在数组结构中。 在搜索请求返回的 XblMultiplayerSearchHandle 对象中,你可以通过使用角色类型的名称对 XblMultiplayerSessionRoleTypes 数据建立索引来获取有关角色类型的信息。 该调用返回 XblMultiplayerRoleType 对象。要获取有关角色的信息,请索引 Roles 数组。 XblMultiplayerRole 对象包含有关角色的信息,包括 MaxMemberCountMemberXuidsMemberCountTargetCount

为玩家分配角色

目前,玩家只能在 XSAPI 中分配自己的角色。要为当前玩家指定角色类型和角色,请将 XblMultiplayerSessionHandle 对象传递给 XblMultiplayerSessionCurrentUserSetRoles 方法。 如果尝试将会话写入服务时该角色已满,则 MPSD 会拒绝写入。
最后修改于 2026年8月25日