智能可穿戴物品
创建具有交互能力的可穿戴物品
智能穿戴设备是一种全局场景。就像 便携式体验一样,它们是一种玩家在元宇宙中移动时随身携带的玩法。例如,在运行一个全局场景时,玩家可以从 Genesis Plaza 的地面捡起一个雪球,走到另一个场景,然后把雪球扔给另一个也在玩同一游戏的玩家。
智能穿戴设备是玩家穿上某件服饰时会被激活的便携体验。智能穿戴设备可以赋予玩家新的能力,例如让他们飞行的喷气背包,或者在整个 Genesis City 中随机放置可收集的金币,在世界其余部分之上再添加一层内容。
📔 注意: 智能穿戴设备只能使用 SDK 7 创建。
该 Creator Hub 目前不支持创建智能穿戴设备项目。
入门
使用 CLI
在新文件夹中打开命令行并运行
npx @dcl/sdk-commands init --project smart-wearable
此命令会为一个新的智能穿戴设备创建基本文件和结构。
模板中的文件
全新智能穿戴设备项目的文件夹与 Decentraland 场景很相似,但你会注意到以下不同之处:
wearable.json包含便携体验的所有元数据这里有一个用于一副深色眼镜的占位 3D 模型(glasses.glb)和缩略图(glasses.png)。你应该将它们替换为你正在创建的实际穿戴物
scene.json要短得多,它不包含与穿戴物无关的属性,例如地块或出生点
关于 wearable.json
默认的 wearable.json 文件如下所示:
以下字段是必需的: wearable.json:
id: 智能穿戴设备的唯一 ID。name: 用户在市场中会看到的穿戴物名称描述: 用户在市场中会看到的穿戴物描述。请务必说明智能穿戴设备能够做什么,因为市场用户在购买前无法预览其功能。rarity: 代币的稀有度供应量。可能的值包括:unique (1 copy)
mythic (10 copies)
exotic (50 copies)
legendary (100 copies)
epic (1000 copies)
uncommon (10.000 copies)
common (100.000 copies)
📔 注意: 如果你从一个现有项目 fork 而来,并且它包含一个 id,在发布你的穿戴物之前,请确保该值是唯一的。使用 uuidgenerator.net 生成一个新的随机 UUID
以下字段也可以可选地包含。这些设置在你上传智能穿戴设备后,也可以在 Builder UI 中进行配置。
data: 包含以下内容replaces: 其他应在装备此穿戴物时被卸下的穿戴物类别列表,除此之外还包括该类别的默认设置。例如:当穿上一个披风上身时,也会隐藏脚部。hides: 其他应在装备此穿戴物时被隐藏(但不卸下)的穿戴物类别列表,除此之外还包括该类别的默认设置。tags: 用于让该穿戴物可在市场中被搜索到的标签。representations:bodyShapes: 可使用此穿戴物的头像表示列表。所有智能穿戴设备都必须同时适用于男性和女性体型。mainFile: 穿戴物 3D 模型所使用的主文件。contents: 用于渲染穿戴物 3D 模型的完整文件列表。例如,3D 模型可能会将纹理作为单独文件包含在内。overrideHides: 此穿戴物类别默认 隐藏 行为的任何例外情况。overrideReplaces: 此穿戴物类别默认 替换 行为的任何例外情况。
category: 要使用的穿戴物类别。可能的值包括:'eyebrows'
'eyes'
'facial_hair'
'hair'
'mouth'
'upper_body'
'lower_body'
'feet'
'earring'
'eyewear'
'hat'
'helmet'
'mask'
'tiara'
'top_head'
'skin'
'hands_wear'
menuBarIcon: 用于“experiences”菜单中的图片,用于代表此便携体验。该图片应位于文件夹根目录。建议图片尺寸为 256x256。model: 用于该穿戴物的 3D 模型。该文件应位于文件夹根目录。bodyShape: 此穿戴物兼容的头像身体类型。可能的值:male
female
both
collectionAddress: 已发布穿戴物合集的以太坊地址。该地址会在发布后分配,也可以留空。
缩略图
你必须包含一个名为 thumbnail.png 的图片,放在文件夹根目录。该图片会同时显示在背包和市场中,用 2D 形式代表你的穿戴物。推荐的图片尺寸为 256x256。
选择一张能符合玩家预期并准确代表你作品的图片。
预览
运行便携体验的预览和运行场景预览几乎一样,只需点击 预览 在 Creator Hub 中,或者运行 npm run start 在命令行中。如果 wearable.json 文件已正确配置并且项目被识别为智能穿戴设备,你会注意到你周围可见的全都是默认的空地块。在此预览模式下,你不受任何固定地块的限制,可以在世界中的任何地方添加 3D 模型或声音。
要测试智能穿戴设备在场景环境中的表现,你也可以通过使用一个 Workspace。例如,你可以将智能穿戴设备与 Genesis Plaza 场景一起运行,以测试它在繁忙场景、乘电梯等情况下的表现。
提示
在定位实体时,请注意位置是全局的,相对于 Genesis Plaza 的 0,0 坐标。
要响应附近玩家:
参见 获取所有玩家 了解如何从周围的其他玩家获取数据。
请注意,智能穿戴设备、周围场景和其他玩家的加载顺序可能会因情况不同而不同。如果玩家进入 Decentraland 时已经穿上了智能穿戴设备,那么很可能你的穿戴物的全局场景会比其他玩家先加载。另一方面,如果玩家先加载进入一个场景,然后再穿上该穿戴物,那么当穿戴物场景开始运行时,其他玩家很可能已经加载完成。
对于多人体验,请等待玩家连接到其 realm 内的一个岛屿。获取 realm 数据并检查 ‘room’ 字段。如果 ‘room’ 字段为 null,则玩家尚未连接到岛屿,其他玩家也还不会加载。你可以每 1 秒定期检查一次,直到 ‘room’ 字段出现,然后再初始化你的逻辑。
要与周围场景交互:
你不能直接向附近场景或其他便携体验发送任何指令,
messageBus目前在每个便携体验/场景中都处于沙箱隔离状态。你可以使用一个中间服务器在便携体验和场景之间传递信息。
如果你执行 raycast,就可以检测到与周围场景中实体的碰撞体发生的命中。这可以告诉你精确的命中位置、法线方向,甚至 3D 模型的实体名称和网格名称。此功能仅在命中使用 SDK7 编写的场景中的实体时有效。
终止便携体验:运行
kill()方法即可自行终止一个便携体验。
发布
要发布你的智能穿戴设备:
确保
wearable.json中的信息是准确的。如果你以另一个项目为起点,请确保id是一个唯一标识符,没有被其他穿戴物使用。运行
npm run pack在你的项目文件夹中。这会生成一个smart-wearable.zip文件到你的项目文件夹中。
📔 注意:以下命令的输出 npm run pack 将显示导出项目未压缩后的大小,必须小于 3MB。若大于此值,构建器将不接受。
打开 Builder,打开 Collections 选项卡,点击 + 上传一个新的穿戴物。
将你压缩后的
smart-wearable.zip文件拖入 Builder,确认所有信息准确无误。
注意:如果你的穿戴物包含不同的模型表示,你需要采用一个变通方法:
在你的项目中,为每个表示创建一个新文件夹(
male和female),并将每个表示的 3D 模型放入其对应文件夹中。更新你的
wearable.json文件,以包含新的表示。运行
npm run pack以生成一个新的 smart-wearable.zip 文件。将新的 smart-wearable.zip 文件拖入 Builder。
打开穿戴物编辑器,并确保“hide”和“remove”类别已正确设置,以便在佩戴此穿戴物时禁用其他穿戴物类别。
创建一个包含此穿戴物以及其他可能穿戴物的新合集。
点击“Mint Items”旁边的三点图标,并选择“See in world”。这将打开一个带有 Sepolia 浏览器的选项卡,你可以在那里在 Decentraland 中试用你合集中的所有穿戴物,并在更真实的场景中查看它们的表现,例如在 Genesis Plaza 里跑动。
到这一步,你的穿戴物就已经准备好发布了。
受限操作
为防止滥用,某些功能默认不允许在便携体验中使用,需要添加权限标志。
参见 所需权限 了解更多细节。
限制
重要:整个智能穿戴设备必须控制在 3MB 以内。这包括 3D 模型、缩略图、代码、库、音频文件、额外的 3D 模型、UI 图片等。此限制针对未压缩文件夹。Builder 不会允许你上传超过此大小的穿戴物。要检查便携体验的大小,请运行
npm run pack,项目大小会在命令输出文本中注明。你也可以通过解压生成的smart-wearable.zip文件并检查文件夹大小来验证。
智能穿戴设备只会为佩戴它的玩家运行便携体验。其他玩家看不到这些效果。例如,如果便携体验渲染了一只跟随玩家的宠物,周围其他玩家不会看到这只宠物。不过,其他玩家会看到作为穿戴物场景一部分运行的角色动画,甚至 自定义头像动画 已作为智能穿戴设备文件的一部分上传。
智能穿戴设备只有在玩家佩戴时才会生效。因此,玩家只能同时激活有限数量的智能穿戴设备,并且根据它们占据身体的不同部位,有些会彼此不兼容。例如,你不能同时戴两个帽子,或者同时戴头盔和头发。
如果一个穿戴物被其他已佩戴的穿戴物“隐藏”但没有被“移除”,那么即使对应的穿戴物不可见,智能穿戴设备仍然可以保持开启。
示例
最后更新于