角色类型
角色类型表示一组角色定义。每个角色必须定义为角色类型的一部分。角色类型在多人游戏会话文档中定义。 一个玩家只能被分配同一角色类型中的一个角色。例如,如果”class”角色类型包括治疗、坦克和输出,则玩家只能被分配到其中一个角色。 你可以定义多个角色类型,并且玩家可以从每个角色类型中分配一个角色。在前面的场景中,选择治疗角色的玩家如果在单独的角色类型中定义了小队长角色,则也可以分配小队长角色。角色类型属性
定义角色类型时,必须指定以下信息。- 角色类型的名称。名称必须为小写字母数字,且不超过 100 个字符。
- 角色的定义。
- 角色是否由所有者管理。
- 角色的属性是否可以在会话生命周期内更改。
hasOwners 功能的会话,才能指定角色类型由所有者管理。
XBOX 服务 API (XSAPI) 目前不支持所有者为其他玩家分配角色。
角色属性
定义角色时,必须指定以下信息。- 角色的名称。名称必须为小写字母数字,且不超过 100 个字符。
- 可以填补该角色的最大玩家数量。该值必须大于零。
- 应填补该角色的目标玩家数量。该值必须大于零,且小于或等于可以填补该角色的最大玩家数量。
创建角色
角色和角色类型通常在会话模板中定义;有关详细信息,请参阅多人游戏会话模板。该服务支持在创建会话期间定义角色类型和角色,但 XSAPI 不支持。在会话模板中定义角色类型和角色
你可以在 XBOX 服务配置期间创建会话模板时定义角色类型和角色。 有关角色类型和角色的信息使用以下格式在会话模板中指定为基级roleTypes 元素。
检索多人游戏会话的角色信息
你可以从多人游戏会话或多人游戏搜索句柄中获取有关角色类型、角色以及分配给每个角色的玩家数量的信息。 在 XSAPI 中,有关角色类型和角色的信息存储在数组结构中。 在搜索请求返回的XblMultiplayerSearchHandle 对象中,你可以通过使用角色类型的名称对 XblMultiplayerSessionRoleTypes 数据建立索引来获取有关角色类型的信息。
该调用返回 XblMultiplayerRoleType 对象。要获取有关角色的信息,请索引 Roles 数组。
XblMultiplayerRole 对象包含有关角色的信息,包括 MaxMemberCount、MemberXuids、MemberCount 和 TargetCount。
为玩家分配角色
目前,玩家只能在 XSAPI 中分配自己的角色。要为当前玩家指定角色类型和角色,请将XblMultiplayerSessionHandle 对象传递给 XblMultiplayerSessionCurrentUserSetRoles 方法。
如果尝试将会话写入服务时该角色已满,则 MPSD 会拒绝写入。