创造你的世界
经济
获取用户所拥有物品的信息
8 分
您可以使用 zepeto module shop api 按类别检索当前连接用户的物品信息。 安装 窗口 → 包管理器 → 请先安装 zepeto world 包 1 21 14 版本或更高版本。 然后安装 zepeto module 包 1 0 7 版本或更高版本。 zepeto module shop api 如果您对 zepeto module shop api 感兴趣,请参考文档: 📘 请参考以下指南。 \[ zepeto module shop api https //developer zepeto me/docs/module/namespaces/zepeto module shop ] 输出物品信息示例 项目 > 创建 > zepeto > typescript 被创建并且名称更改为 myitemlist。 编写如下所示的示例脚本。 import { zepetoscriptbehaviour } from 'zepeto script' import { shopservice, category, itemkeyword } from 'zepeto module shop' import { zepetopropertyflag } from 'zepeto' import { texture2d, waituntil } from 'unityengine' import { rawimage } from 'unityengine ui' import { item } from 'zepeto module content' export default class myitemlist extends zepetoscriptbehaviour { public thumbnailimage rawimage; start() { this startcoroutine(this cogetmycategory()); } cogetmycategory() { var requestcategory = shopservice getmycategoryasync(); yield new waituntil(() => requestcategory keepwaiting == false); if (requestcategory responsedata issuccess) { let categoryinfo = requestcategory responsedata category; console log(`\[分类信息] ${categoryinfo displayname} 长度 ${categoryinfo categories length}`); let categories category\[] = categoryinfo categories; for (const category of categories) { console log(`\[分类显示名称] ${category displayname} `); //分类关键字作为 shopservice getmycontentitemlistasync 函数的参数 console log(`\[分类关键字] ${category keyword} `); } } this startcoroutine(this cogetmyitem()); } cogetmyitem() { var requestitemlist = shopservice getmycontentitemlistasync(itemkeyword all, null); yield new waituntil(() => requestitemlist keepwaiting == false); if (requestitemlist responsedata issuccess) { let items item\[] = requestitemlist responsedata items; // 作为 getmycontentitemlistasync() 结果接收到的物品数量。 console log(items length); for (let i = 0; i < items length; ++i) { const property zepetopropertyflag = items\[i] property; // 物品 id 和物品属性 console log(`\[内容物品] (id) ${items\[i] id} | (property) ${property}`); // 将物品缩略图设置为 rawimage 的纹理 var texturereq = items\[i] getthumbnailasync(); yield new waituntil(() => texturereq keepwaiting == false); let thumbnailtexture texture2d = texturereq responsedata texture; this thumbnailimage texture = thumbnailtexture; } } } } 脚本描述 获取我的物品标签信息 调用 shopservice getmycategoryasync() 以了解我的物品标签中的物品类别。 当您成功收到响应时,可以通过 responsedata 属性访问 categoryresponse 对象。 categoryresponse category categories 被浏览,输出我的物品标签中的物品类别列表。 获取物品列表 调用 shopservice getmycontentitemlistasync(itemkeyword all, null) 以获取所有类别的物品列表。 您可以选择仅从某些类别中检索物品。例如,您可以使用 itemkeyword hair 而不是 itemkeyword all 来仅检索头发物品。 第二个参数仅在您知道下一个页面令牌时使用。第一次调用 api 时将其设置为 null。 有关 nextpagetoken 的示例,请查看以下信息。 当您收到成功响应时,可以通过 responsedata 属性访问 contentitemlistresponse 对象。 itemresponse items 被浏览,输出每个物品的 id 和部分 enum 代码。 此外,物品缩略图被设置为指定的 rawimage。 完成脚本编写后,将脚本添加到场景中的对象。 按下播放按钮将显示我的物品标签的类别列表和所有类别的物品信息。 如果您创建了项目缩略图预制件,并且缩略图是根据项目列表动态创建的,您可以在用户界面上显示项目列表缩略图。 检查用户特定物品的拥有状态示例 您可以利用 getmycontentitemlistasync() 来检查某人在世界上是否穿着特定的衣物。 以下是一个简单的示例,用于在拥有特定物品的用户界面上显示消息。 项目 > 创建 > zepeto > typescript 被创建并且名称更改为 checkitem。 编写如下示例脚本。 import { zepetoscriptbehaviour } from 'zepeto script' import { shopservice, itemkeyword } from 'zepeto module shop' import { zepetopropertyflag } from 'zepeto' import { waituntil } from 'unityengine' import { text } from 'unityengine ui' import { item } from 'zepeto module content' export default class checkitem extends zepetoscriptbehaviour { public resulttext text; public checkitemid string; start() { this resulttext gameobject setactive(false); this startcoroutine(this cocheckitem()); } cocheckitem() { let nextpagetoken string | null = null; do { // 请求用户内容物品的列表。 const requestitemlist = shopservice getmycontentitemlistasync(itemkeyword all, nextpagetoken); yield new waituntil(() => requestitemlist keepwaiting == false); if (requestitemlist responsedata issuccess) { // 从响应中获取内容物品。 const contentitems item\[] = requestitemlist responsedata items; nextpagetoken = requestitemlist responsedata nextpagetoken; // 遍历内容物品。 for (let i = 0; i < contentitems length; ++i) { const property zepetopropertyflag = contentitems\[i] property; // 检查物品 id 是否与指定 id 匹配。 if (contentitems\[i] id == this checkitemid) { // 激活匹配的物品消息。 this activatematcheditem(); break; } } } else { break; } } while (nextpagetoken != null); } activatematcheditem() { // 显示匹配的物品消息。 this resulttext gameobject setactive(true); this resulttext text = "哇,你有我制作的物品!"; } } 脚本描述 这是一个浏览已登录用户的“我的物品”列表(所有类别)的脚本,并在检查器中找到输入的匹配物品id。 如果有很多物品,nextpagetoken值不为null。因此,使用do while语句重复该过程,直到值变为null。 请注意,nextpagetoken作为shopservice getmycontentitemlistasync(itemkeyword all, nextpagetoken)的第二个参数提供。 当您收到成功响应时,可以通过responsedata属性访问contentitemlistresponse对象。 itemresponse items被浏览以查找输入的物品id的匹配项。 如果找到匹配的物品,将调用activatematcheditem()在用户的屏幕上显示文本并结束循环。 完成脚本编写后,将脚本添加到场景中的对象。 输入您希望检查的物品id,以查看世界中的用户是否在检查器中拥有该物品。 按下播放按钮以运行该过程。如果用户登录到一个世界并且有与输入的物品id匹配的物品,屏幕上将显示文本。 您可以应用此示例来创建各种有趣的内容。