| 任务描述 | 函数 |
|---|---|
检索关于特定成就的信息,包括成就名称、类型、目标或位域长度。 | Platform.Achievements.GetDefinitionsByName() |
检索关于用户在特定成就上的进度的信息,包括名称、解锁的状态、解锁成就的时间、当前位域和当前计数。 | Platform.Achievements.GetProgressByName() |
检索关于所有成就的信息,包括成就名称、类型、目标或位域长度。 | Platform.Achievements.GetAllDefinitions() |
检索关于用户在所有成就上的进度的信息,包括名称、解锁的状态、解锁成就的时间、当前位域和当前计数。 | Platform.Achievements.GetAllProgress() |
| 任务描述 | 函数 |
|---|---|
解锁指定的成就。这将完全解锁某个成就,包括计数和位域成就,而无论目标是否实现。 | Platform.Achievements.Unlock() |
增加计数成就上的计数。 | Platform.Achievements.AddCount() |
在位域类型成就中解锁一个或多个位。将位解锁后,它将一直处于解锁状态。例如,如果位域是 10011,您调用了传递 00110 的 AddFields,最终状态将为 10111。 | Platform.Achievements.AddFields() |
LIKES_TO_WIN 的成就。随后,它检查了更新消息,看看是否已解锁成就,如果是,则在应用中将成就设置为已解锁。否则,如果满足某个游戏条件(在该示例中,如果记录了胜利),游戏将会继续进行并增加成就计数。using UnityEngine;
using System.Collections;
using Oculus.Platform;
using Oculus.Platform.Models;
public class AchievementsManager : MonoBehaviour
{
// API NAME defined on the dashboard for the achievement
private const string LIKES_TO_WIN = "LIKES_TO_WIN";
// true if the local user hit the achievement Count setup on the dashboard
private bool m_likesToWinUnlocked;
public bool LikesToWin
{
get { return m_likesToWinUnlocked; }
}
public void CheckForAchievmentUpdates()
{
Achievements.GetProgressByName(new string[]{LIKES_TO_WIN}).OnComplete(
(Message<AchievementProgressList> msg) =>
{
foreach (var achievement in msg.Data)
{
if (achievement.Name == LIKES_TO_WIN)
{
m_likesToWinUnlocked = achievement.IsUnlocked;
}
}
}
);
}
public void RecordWinForLocalUser()
{
Achievements.AddCount(LIKES_TO_WIN, 1);
CheckForAchievmentUpdates();
}
}
POST https://graph.oculus.com/$APPID/achievement_definitions| 参数 | 必要/可选 | 描述 | 类型 | 示例 |
|---|---|---|---|---|
access_token | 必要 | 包含 OC|$APP_ID |$APP_SECRET 的 Bearer 口令 | 字符串 | “OC|1234|456789” |
api_name | 必要 | 用于引用此 API 和客户端 SDK 中的成就的名称。这个字母数字字符串对应用来说必须是唯一的。如果成就存在,调用将会更新它。如果它不存在,调用将会使用此名称来创建成就。 | 字符串 | “VISIT_3_CONTINENTS” |
achievement_type | 必要 | 这是成就类型。有三种类型的成就,请参阅上面的描述获取关于不同类型的信息。 | 有 SIMPLE、COUNT、BITFIELD 值的枚举 | “SIMPLE” |
achievement_write_policy | 必要 | 确定谁可以写入成就进度。请参阅上面的描述获取关于两种不同写入策略的信息。 | 有 CLIENT_AUTHORITATIVE、SERVER_AUTHORITATIVE 值的枚举 | “CLIENT_AUTHORITATIVE” |
target | 如果 成就 achievement_type 是计数或位域,则为必要 | 要解锁的成就的事件发生次数。请参阅上面的描述获取关于目标的更多信息。 | 整数 | 50 |
bitfield_length | 如果成就类型是位域,则为必要 | 该成就的位域大小。 | 整数 | 7 |
is_archived | 可选。默认为 false。 | 指示是否归档成就的布尔值。也可用于对成就取消归档。归档不会删除成就或用户进度。 | 布尔值 | “false” |
title | 必要 | 用户看到的成就的名称。 | 字符串 | “已到过 3 大洲” |
description | 必要 | 用户看到的文本描述。 | 字符串 | “该成就的解锁条件是...” |
unlocked_description _override | 可选 | 解锁成就时用户看到的文本描述。 | 字符串 | “恭喜!您已到过 3 大洲。” |
is_secret | 可选 - 默认是 false。 | 指示是否在取得成就前隐藏成就的布尔值。 | 布尔值 | “false” |
unlocked_image_file | 可选 - 使用默认图像。 | 取得成就后显示的图标的本地路径。必须是 256x256 PNG 文件。 | 字符串 | ”@/path/to/unlocked_icon.png; type=image/png” |
locked_image_file | 可选 - 如果提供了解锁的图像,将使用灰度版本作为锁定的图像。否则,将使用默认图像。 | 取得成就前显示的图标的本地路径。必须是 256x256 PNG 文件。 | 字符串 | ”@/path/to/locked_icon.png; type=image/png” |
curl -X POST -d "access_token=OC|$APP_ID|$APP_SECRET" -d "api_name=VISIT_3_CONTINENTS" -d "achievement_type=BITFIELD" -d "achievement_write_policy=SERVER_AUTHORITATIVE" -d "target=3" -d "bitfield_length=7" -d "is_archived=false" -d "title=Achievement Title" -d "description=How to earn me" -d "unlocked_description_override=You did it" -d "is_secret=false" -d "locked_image_file=@/path/to/locked_icon.png;type=image/png" -d "unlocked_image_file=@/path/to/unlocked_icon.png;type=image/png" https://graph.oculus.com/$APPID/achievement_definitions
{"id":"1074233745960170"}
GET https://graph.oculus.com/$APPID/achievement_definitions| 参数 | 必要/可选 | 描述 | 类型 | 示例 |
|---|---|---|---|---|
access_token | 必要 | 包含 OC|$APP_ID |$APP_SECRET 的 Bearer 口令 | 字符串 | “OC|1234|456789” |
api_names | 可选 | 要获取的成就定义的名称。如果省略,将会返回所有成就定义。 | 字符串数组 | [“VISIT_3_CONTINENTS”, “WALK_500_MILES”] |
include_archived | 可选 | 指示是否要包含已归档成就的布尔值。这只能在使用应用访问口令验证身份时使用。 | 布尔值 | “false” |
fields | 可选 | 要检索的用逗号分隔的字段名称清单。可以包含: api_name、achievement_type、achievement_write_policy、target、bitfield_length、is_archived、title、description、unlocked_description_override、is_secret、locked_image_uri 和 unlocked_image_uri。如果省略,将只返回编号。 | 字符串 | “api_name,achievement_type” |
curl -X GET "https://graph.oculus.com/$APP_ID/achievement_definitions?fields=api_name,achievement_type,achievement_write_policy,target,bitfield_length,is_archived,title,description,unlocked_description_override,is_secret,locked_image_uri,unlocked_image_uri&api_names=\[\"VISIT_3_CONTINENTS\"\]&access_token=OC\|$APP_ID\|$APP_SECRET"
{
"data": [{
"id": "1074233745960170",
"api_name": "VISIT_3_CONTINENTS",
"achievement_type": "BITFIELD",
"achievement_write_policy": "SERVER_AUTHORITATIVE",
"target": 3,
"bitfield_length": 7,
"is_archived": false,
"title": "Achievement Title",
"description": "How to earn me",
"unlocked_description_override": "You did it",
"is_secret": false,
"locked_image_uri": "https://scontent.oculuscdn.com/...",
"unlocked_image_uri": "https://scontent.oculuscdn.com/..."
}]
}
POST https://graph.oculus.com/$USER_ID/achievements| 参数 | 必要/可选 | 描述 | 类型 | 示例 |
|---|---|---|---|---|
access_token | 必要 | 包含 OC|$APP_ID |$APP_SECRET 的 Bearer 口令 | 字符串 | “OC|1234|456789” |
api_name | 必要 | 要更新的成就的名称。 | 字符串 | “VISIT_3_CONTINENTS” |
add_count | 如果成就是计数类型,则为必要。 | 要为此成就填加到进度计数器的值。仅对计数成就有效。 | 整数 | 25 |
add_bits | 如果成就是位域类型,则为必要。 | 要为此成就填加到进度的位。仅对位域成就有效。 | 字符串 | “110001” |
force_unlock | 可选 - 默认是 false。 | 无论进度如何,立刻解锁成就。这必须用于解锁简单成就。 | 布尔值 | “false” |
curl -X POST -d "access_token=OC|$APP_ID|$APP_SECRET" -d "api_name=MY_ACHIEVEMENT" -d "add_count=25" -d "force_unlock=true" https://graph.oculus.com/$USER_ID/achievements
{"id":"1074233745960170","api_name":"MY_ACHIEVEMENT","just_unlocked":true}
just_unlocked 参数,指示此操作是否会导致解锁成就。GET https://graph.oculus.com/$USER_ID/achievements| 参数 | 必要/可选 | 描述 | 类型 | 示例 |
|---|---|---|---|---|
access_token | 必要 | 包含 OC|$APP_ID |$APP_SECRET 的 Bearer 口令 | 字符串 | “OC|1234|456789” |
api_names | 可选 | 要获取的成就定义的名称。如果省略,将会返回所有成就定义。 | 字符串数组 | [“VISIT_3_CONTINENTS”, “WALK_500_MILES”] |
fields | 可选 | 如要检索的用逗号分隔的字段名称清单。可以包含: id、unlock_time、is_unlocked 和 count_progress。如果省略,将只返回编号。 | 字符串 | “api_name,achievement_type” |
curl -X GET "https://graph.oculus.com/$USERID/achievements?access_token=OC\|$APP_ID\|$APP_SECRET&api_names=\[\"VISIT_3_CONTINENTS\"\]&fields=target,bitfield_progress,is_unlocked,unlock_time"
{
"data": [{
"id": "1074233745960170",
"bitfield_progress": "1001100",
"is_unlocked": true,
"unlock_time": 1459815726
}]
}
POST https://graph.oculus.com/achievement_remove_all| 参数 | 必要/可选 | 描述 | 类型 | 示例 |
|---|---|---|---|---|
access_token | 必要 | 包含 OC|$APP_ID |$APP_SECRET 的 Bearer 口令 | 字符串 | “OC|1234|456789” |
user_id | 必要 | 要为其移除成就的用户编号。 | 字符串 | “12345” |
curl -X POST "https://graph.oculus.com/achievement_remove_all?user_id=$USER_ID&access_token=OC\|$APP_ID\|$APP_SECRET"
{"success":true}