> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XblAchievementsManagerUpdateAchievement

> XblAchievementsManagerUpdateAchievement

# XblAchievementsManagerUpdateAchievement

允许更新成就进度并解锁成就。

## 语法

```cpp theme={null}
HRESULT XblAchievementsManagerUpdateAchievement(  
         uint64_t xboxUserId,  
         const char* achievementId,  
         uint8_t currentProgess  
)  
```

### 参数

*xboxUserId*   \_In\_\
类型：uint64\_t

玩家的 XBOX 用户 ID。

*achievementId*   \_In\_\
类型：char\*

由开发人员中心定义的 UTF-8 编码的成就 ID。

*currentProgess*   \_In\_\
类型：uint8\_t

用于指示进度的成就完成百分比。有效值为 1 到 100。设置为 100 可解锁成就。服务端会将进度设置为所发送值中的最大值。

### 返回值

类型：HRESULT

此 API 操作的 HRESULT 返回代码。

## 备注

在使用 [XblAchievementsManagerAddLocalUser](/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanageraddlocaluser) 成功初始化成就管理器之后，即使在 PC 和 XBOX 主机上离线时，此 API 也能正常工作。即使标题未在运行，系统也会在重新建立连接时发布离线更新。操作的结果不会立即在本地反映出来。该更改最快会在下一帧调用 DoWork 之后反映出来。一旦反映出来，DoWork 返回的数组中将包含一个事件类型为 AchievementProgressUpdated 的 [XblAchievementsManagerEvent](/reference/live/xsapi-c/achievements_manager_c/structs/xblachievementsmanagerevent)；如果新进度导致成就解锁，则可能还会附加一个事件类型为 AchievementUnlocked 的事件。如果成就已经解锁，或进度值小于或等于从服务端缓存的值，则此函数将分别返回 E\_NOT\_VALID\_STATE 或 E\_INVALIDARG。此函数只能更新基于标题的成就。基于事件的成就无法使用此函数进行更新。

## REST 调用

V2 POST /users/xuid({xuid})/achievements/{scid}/update

## 要求

**头文件：** achievements\_manager\_c.h

**库：** Microsoft.Xbox.Services.14x.GDK.C.lib

## 另请参阅

[achievements\_manager\_c](/reference/live/xsapi-c/achievements_manager_c/achievements_manager_c_members)


## Related topics

- [XblAchievementsManagerAddLocalUser](/zh-CN/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanageraddlocaluser.md)
- [XBOX 成就管理器 API 概述](/zh-CN/services/xbox-services/player-data/achievements/achievements-manager/live-achievements-manager-overview.md)
- [XblAchievementsUpdateAchievementAsync](/zh-CN/reference/live/xsapi-c/achievements_c/functions/xblachievementsupdateachievementasync.md)
- [XblAchievementsManagerGetAchievement](/zh-CN/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanagergetachievement.md)
- [XblAchievementsManagerGetAchievements](/zh-CN/reference/live/xsapi-c/achievements_manager_c/functions/xblachievementsmanagergetachievements.md)
