- 创建一个易于调用的 API。
- 在后台使用实时活动服务创建最新的信息。
- 开发人员可以同步调用成就管理器 API,而不会对服务造成额外的压力。
功能
成就管理器提供以下功能:- 简化的成就 API
- 每个用户的最新成就状态和进度
- 减少对 XBOX 服务的调用次数
- 这直接关系到数据获取的整体延迟减少
- 线程安全
- 高效地保持数据为最新
核心概念
成就:成就包括游戏得分和其他奖励,例如数字美术品、新地图、角色和统计信息提升,以及朝向完成的当前进度。 要保持用户成就的状态为最新,必须每帧调用函数 XblAchievementsManagerDoWork。在 Windows 上只能有一个本地用户
API 概述
您将最常使用以下关键 API。 您可以在 XBOX Live API 参考中找到成就管理器 API 的完整说明。 您还可以在 XblAchievementsManager 前缀文档中找到这些 API。将本地用户添加到成就管理器
- C API 函数:XblAchievementsManagerAddLocalUser
获取用户的成就状态
调用此函数将返回与指定条件匹配的成就的句柄。 句柄指向的成就是匹配成就的线程安全副本。 句柄指向的数据将存在,直到句柄关闭为止,但如果游戏在下一次调用 XblAchievementsManagerDoWork 之后保持句柄,则可能会过时。用法
使用成就管理器事件
成就管理器以事件的形式告知您发生了什么。 您可以使用这些事件来更新 UI 或执行其他逻辑。 C API返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
- C API:XblAchievementsManagerEventType::AchievementProgressUpdated
- C API:XblAchievementsManagerEventType::AchievementUnlocked
其他详细信息
成就管理器不是在游戏循环期间频繁地从服务中获取成就状态,而是在用户向成就管理器注册时获取该用户的所有成就的状态。 然后,成就管理器从服务接收有关用户成就更新的事件,然后将这些事件作为由 XblAchievementsManagerDoWork 函数返回的 events 转发给游戏。 events 是 XblAchievementsManagerEvent 的列表,每个 XblAchievementsManagerEvent 包含在上一帧期间发生的成就更改。 有关更多信息,请参阅 XblAchievementsManagerEvent API 文档。注册要跟踪成就的用户
在此场景中,您希望向成就管理器注册用户以开始跟踪该用户成就的更新,并在本地缓存该用户所有成就的状态。 C API返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
其他详细信息
上面的示例展示了如何为用户初始化成就管理器,并保持其为最新状态。 在游戏循环中,XblAchievementsManagerDoWork 函数处理并应用对用户成就所做的任何更新。检索用户的单个成就
在此场景中,您希望获取用户的单个成就的状态。 C API- XblAchievement
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievement
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
检索用户的所有成就
在此场景中,您希望获取用户所有成就的状态。 C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievements
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
检索用户的成就子集
在此场景中,您希望获取用户成就子集的状态。 C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievements
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
检索用户特定状态的成就子集
在此场景中,您希望获取用户特定进度状态下的成就子集的状态。 C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementProgressState
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievementsByState
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
更新用户的成就
更新用户的成就进度。 C API- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerUpdateAchievement
返回的事件
本地用户初始状态已同步:当成就管理器完成获取用户当前游戏所有成就的当前状态时触发。- C API:XblAchievementsManagerEventType::LocalUserInitialStateSynced
