场景
场景是 实体 它们会在 Decentraland 的不同部分产生行为。它们可以跨越多个地块,玩家在 World Explorer 中穿过它们时,会执行场景提供的特殊代码。
你可以在以下位置找到一个完整的实际示例 此场景的 manifest 在 Foundation 的内容服务器上。
指针
场景有一个或多个关联的 指针 其形式为地块坐标字符串,例如 "0,0"。运行该场景的每个地块都会列在 指针 数组 中,而内容服务器会将所有这些指针解析到该场景。
换句话说,你可以选择一个地块的 x/y 坐标,并通过向内容服务器查询 "<x>,<y>" 指针来定位它正在运行的场景。这就是 World Explorer 在玩家浏览世界时决定是否启用某个场景行为的方式。
一个典型的 指针 数组看起来像这样:
{
"pointers": [
"-113,-134",
"-113,-133",
"-113,-132",
],
// ... 其他实体属性
}这些数据也可在下面详细说明的 metadata.scene.parcels 字段中找到,如果你只想在 manifest 中保存场景特定的对象。
元数据字段
对于 实体 类型为 场景 的实体,在 metadata 顶层字段中有几个特殊属性。
所有者
关于场景维护者的信息。
主文件
该 内部文件名 指向该场景的主 JavaScript 文件。
标签
描述此场景的字符串标签数组。
显示
供 Explorer 向玩家展示的场景信息(见下文)。
场景
此场景生效的地块以及其中心位置(见下文)。
联系
可联系该场景创建者或维护者的姓名和电子邮件地址(见下文)。
出生点
玩家进入此场景时的位置和摄像机角度(见下文)。
所需权限
建议 Explorer 向玩家请求的权限(见下文)。
功能开关
功能标志设置
显示
在 metadata.display中,你会找到一些在玩家进入场景之前向其说明场景信息的实用属性。
例如:
场景
该 metadata.scene 属性是一个对象,用于描述此场景在世界地图中的位置。
地块
运行此场景的地块指针数组。
基准
此场景原点的地块指针。
实际上,它看起来像这样:
该 基准 字段始终包含在 地块 数组中。
联系信息
该 metadata.contact 对象包含该场景所有者或维护者的联系信息。
名称
此联系人的名称。
电子邮件
(可选)可联系的电子邮件地址。
在 JSON 中:
虽然 名称 字段在每个场景中都已填写,但你会发现,在实际使用中, 电子邮件 字段通常是空字符串。这是场景创建者出于隐私考虑所做的选择。
出生点
该 metadata.spawnPoints 字段定义了一个点和摄像机方向数组,用于决定进入场景的玩家应出现的位置,以及他们最初应朝向的方向。必须至少定义一个出生点。
数组中的每一项都有若干属性:
名称
用于标识此出生点的标签。
position
在一个 { x, y, z } 浮点坐标对象中的起始位置。
cameraTarget
在一个 { x, y, z } 浮点坐标对象中的起始位置。
默认
是否在未另行指定时使用此出生点。
例如:
所需权限
在 metadata.requiredPermissions 你会找到一个由众所周知的字符串组成的数组,用于声明在 World Explorer 允许某些操作之前应向玩家请求哪些权限。这取决于 Explorer;其他为不同用途构建的客户端可以选择忽略它。
以下是当前支持的权限集:
USE_FETCH
允许场景执行外部 HTTP 请求。
USE_WEBSOCKET
允许场景使用 WebSocket API 建立外部连接。
OPEN_EXTERNAL_LINK
允许场景打开一个 URL(在浏览器标签页或 WebView 中)。
USE_WEB3_API
允许场景与钱包通信。
ALLOW_TO_TRIGGER_AVATAR_EMOTE
允许场景通过表情动作让玩家头像执行动画。
ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE
允许场景更改玩家的位置。
功能开关
该 metadata.featureToggles 字段可让场景指明 World Explorer 的某些功能应启用还是禁用。
该字段包含一个如下形式的对象 { [featureName]: 'enabled' | 'disabled' },例如:
目前, voiceChat 是唯一常见支持的功能标志。
最后更新于