> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/scene-metadata.md).

# 场景元数据

了解如何设置场景并配置其元数据。

场景是一个在空间上划定范围的 Decentraland 项目，并映射到一个或多个地块。如果场景部署到 Decentraland Genesis City 地图上，玩家可以通过访问场景坐标来体验它。如果场景部署到 [World](/creator/content-creator-zh/chang-jing-sdk7/fa-bu/publishing-options.md#decentraland-worlds)，玩家可以通过 URL 访问它。

参见 [场景中的文件](/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/scene-files.md) ，查看场景项目中使用了哪些文件。

## 元数据

要在……中编辑场景的元数据， [Creator Hub 中的场景编辑器](/creator/content-creator-zh/chang-jing-bian-ji-qi/ru-men/about-editor.md)，打开一个场景并点击 **铅笔图标**.

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-d2147688ebde75948ba26a9fbe1261f9abdc66c7%2Fpencil-icon.png?alt=media\&token=21677d31-8915-4809-a60a-6674c7497d98)

这会打开场景菜单，你可以在其中配置多个属性。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5a3754defec68c898717a9468d29cf7d4e1d973e%2Fmetadata-ui.png?alt=media\&token=bab8a071-2670-4426-a54b-3c828aacb380)

或者，你也可以直接编辑 `scene.json` 文件，所有这些值都存储在其中。

{% hint style="warning" %}
**📔 注意**：不要向 `scene.json` 文件中添加本页未提及的自定义字段，否则可能会导致场景加载出现问题。
{% endhint %}

## 场景标题、描述和图片

为你的场景提供标题、描述和缩略图非常重要，这样才能吸引玩家，并帮助他们了解会看到什么。

当玩家在地图上选择你场景的地块时，他们会在一个弹窗中看到这些内容。当他们被 [传送](/creator/content-creator-zh/chang-jing-sdk7/jiao-hu-xing/external-links.md) 到那里时，他们还会在确认界面中看到这些内容。在这里设置有吸引力的数据，可以显著帮助为你的场景引流。

当玩家在世界中导航并进入你的场景时，他们可以在小地图下方看到场景标题。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5b757762ae3f0480ff5f7d65a67e2d077be5847b%2Fscene-name.png?alt=media\&token=8f433eb7-6323-49ba-bacd-2a776cab947b)

通过 Scene Editor 中的场景菜单添加这些数据。

如果你希望其他开发者能够联系到你，也可以在场景中添加联系信息。

{% hint style="info" %}
**📔 注意**：World 会保留自己的名称、描述和缩略图，与场景的元数据分开。如果一个 World 只包含一个场景，则每次发布时，World 的元数据都会从场景的元数据中更新。如果它包含多个场景，则 World 的元数据是独立的，并且只能在……中编辑。 **管理** Creator Hub 的 [World 元数据与场景元数据](/creator/content-creator-zh/chang-jing-bian-ji-qi/fa-bu/publish-scene.md#world-metadata-vs-scene-metadata).
{% endhint %}

### 场景缩略图

缩略图设置在 `navmapThumbnail` 字段中。它必须是一个 *.png* 或 *.jpg* 具有 **16:9** 宽高比的图片。 *1920x1080* 像素是推荐的目标尺寸。其他尺寸也可以，只要保持相同的 16:9 比例即可。

平台的某些部分会显示缩小后的方形缩略图，裁剪到中心 *1080x1080* 像素。请将任何重要内容，例如文字或标志，放在该安全区域内，以免被裁掉。

{% hint style="warning" %}
**📔 注意**：Creator Hub 会拒绝不是 16:9 的图片。如果你手动将 `navmapThumbnail` 设置为其他形状的图片，显示它的客户端可能会以不可预测的方式拉伸或裁剪它。参见 [场景缩略图](/creator/content-creator-zh/chang-jing-bian-ji-qi/pei-zhi/scene-settings.md#scene-thumbnail).
{% endhint %}

![场景缩略图安全区域：完整的 1920x1080 图像，其中中央 1080x1080 正方形标记为安全区域，左右两侧区域标记为裁剪区域](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-3d512bbb08aca6a9630f7229176099dd565100b5%2Fscene-thumbnail-safe-area.png?alt=media\&token=0bf6d6ff-956e-4894-b621-19f8287c200c)

……上的图片 `navmapThumbnail` 应当是项目文件夹中某个图片文件的路径。它也可以是指向其他位置托管图片的 URL 链接。

{% hint style="warning" %}
**📔 注意**：如果你将图片托管在别处，请确保该站点具有允许在其他站点显示内容的宽松 CORS 策略。
{% endhint %}

## 类别

你可以为场景添加类别，帮助玩家探索 Decentraland。这些类别会用于 [Decentraland Places dApp](https://places.decentraland.org) ，以对每个地点进行分类，并让玩家更容易找到他们感兴趣的内容。

**类别** 必须从预定义的选项列表中选择：

* 🎨 艺术
* 🕹️ 游戏
* 🃏 赌场
* 👥 社交
* 🎶 音乐
* 👠 时尚
* 🪙 加密
* 📚 教育
* 🛍️ 商店
* 🏢 商业
* 🏅 运动
* 🏃 跑酷

一个场景可以属于不止一个类别，最多可列出 3 个类别。

在 `scene.json` 类别列在 `标签` 数组中。

以下是预定义类别：

* `艺术`
* `游戏`
* `赌场`
* `社交`
* `音乐`
* `时尚`
* `加密`
* `教育`
* `商店`
* `商业`
* `运动`
* `跑酷`

例如，一个场景可以被标记为 `游戏` 和 `赌场` ，只需将以下内容添加到 `scene.json`

```json
  "tags": [
    "game",
    "casino",
  ],
```

之后，该场景会在 Places dApp 中按 `游戏` 和 `赌场` 类别列出。

## 年龄分级

该 **年龄分级** 字段用于对你的场景内容进行分类。Decentraland 是一个 18+ 平台。可用的选项如下：

* **🟡 `一个` ，适用于成人（18+）**：这是 Decentraland 的 [服务条款](https://decentraland.org/terms)中规定的最低年龄要求。如果你的场景包含适合成人的内容，例如中度或强烈的语言、暴力、露骨内容、赌博，或酒精、烟草和药物等物质，请选择此类别。

通过 `scene.json`编辑年龄分级时，分级是一个 **单字母代码**，请写 **一个** 表示成人。 `分级` 字段位于 JSON 树的根级别。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-641bfde710b047bcc83949bb7e54c794a59bc7f6%2Fcontent-moderation-flag-icon.png?alt=media\&token=8ed8919f-e077-45d4-9687-f0181e7c7835)

```json
 "rating": "A"
```

### 受限内容

场景还有第三类：🔴 `R` 代表受限。该分级由内容审核员手动应用于违反 Decentraland [内容政策](https://decentraland.org/content)规定的场景。违规内容可能包括但不限于：

* 可疑内容或垃圾信息
* 辱骂或仇恨内容
* 性内容或贬损性内容
* 虐待儿童
* 骚扰或霸凌
* 宣扬恐怖主义/暴力
* 知识产权/版权侵权

具有此分级的场景不会加载，任何人都无法与之交互。如果你的场景属于此类别，你应检查并更新它，以符合 [内容政策](https://decentraland.org/content).

## 功能开关

某些功能可以在特定场景中被禁用，以防玩家滥用它们。请在 **设置** 场景设置的选项卡中进行配置。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-256dd7099b9a9089211e7ce443211d5abfb61de5%2Fscene-restrictions.png?alt=media\&token=21fd4ec0-561d-4be3-9c40-6ab7d73128d8)

目前，只有以下功能是这样处理的：

* **语音聊天**：指玩家使用麦克风与附近的其他玩家进行语音聊天。
* **禁用便携体验**：此设置将决定玩家站在你的场景内时，任何便携体验的行为。这不仅包括 [便携体验](/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/portable-experiences.md) ，还包括 [智能穿戴设备](/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/smart-wearables.md)。使用此设置，你可以选择让它们全部保持启用（默认）、禁用它们，或隐藏其 UI。这对于便携体验可能会让某些玩家获得不公平优势的场景很有用，例如在跑酷挑战中使用喷气背包。也建议在发生区块链交易的场景中禁止它们，因为恶意的便携体验可能会伪装成场景的 UI。

在 `scene.json` 文件中，这些开关在 `featureToggles`下进行管理。相应功能默认启用，除非被指定为 *disabled* 在 `scene.json` 文件。

```json
"featureToggles": {
    "voiceChat": "disabled",
    "portableExperiences": "enabled" | "disabled" | "hideUi"
},
```

如果某个 `featureToggles` 属性在你的 `scene.json` 文件中不存在，请在 JSON 树的根级别创建它。

### 打赏

你可以从访问你场景的玩家那里收到打赏。要启用打赏，请前往 **详情** 场景设置中的选项卡，并在下方提供一个以太坊地址 **创建者钱包地址**.

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-7e5ad3784efc0fe3c5f96c88d866683e2177e274%2Fcreator-wallet-address.png?alt=media\&token=2680fa93-72b5-45d3-a1c6-9df5f6517d97)

你也可以在 `scene.json` 文件中，在 `creator` 字段中，指向你自己的流媒体基础设施。

```json
  "creator": "0x1234567890123456789012345678901234567890"
```

当玩家访问你的场景时，他们会在屏幕左上角看到一个存钱罐图标。点击它会打开一个模态窗口，玩家可以在其中给你打赏。也可以通过在地图上打开你场景的信息来访问此菜单。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-96c1bf20f0a166699479dd1ef946cf297904caf2%2FTipIcon.png?alt=media\&token=7cb3c8a4-c8a6-42d9-9d79-8cdc02486f2c)

打赏弹窗允许玩家选择他们想发送的 MANA 数量。玩家必须在钱包中持有 MANA 才能发送打赏。如果你提供的地址关联了 Decentraland NAME，则此弹窗会在以太坊地址旁显示钱包所有者的姓名。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-25d35de64b10216b0bcf6e2cc8061cf160941673%2Ftipping-modal.png?alt=media\&token=e52b3950-3993-477a-baa2-606dd4297b69)

每当玩家给你打赏时，你都会在 Decentraland 通知选项卡中收到通知。

## 出生位置

该 **出生设置** 在 **设置** 选项卡定义了玩家直接访问你的场景时的出生位置，无论是直接在浏览器中输入坐标，还是通过传送进入。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-791de650bd7d09ceef08632a0191fbe6f1ac52fa%2Fspawn-point-ui.png?alt=media\&token=b9c29088-79f3-4dd8-bdb5-196dc5f02763)

你的场景中可能有物体会阻挡玩家移动，例如树木或楼梯，如果玩家出生在这些物体上方就会被卡住。你的场景也可能有高地。为防止玩家出生在无法移动的位置，你可以在特定位置设置多个出生点。

该位置由场景内部的坐标组成。这些数字指的是地块内的位置，类似于你在场景代码中的 Transform 组件里用于 [定位实体](/creator/content-creator-zh/chang-jing-sdk7/3d-nei-rong-ji-chu/entity-positioning.md).

{% hint style="warning" %}
**📔 注意**：所有出生点都必须位于构成该场景的地块内。你不能将玩家出生在这些地块范围之外。
{% endhint %}

查看 **随机偏移** 框来在出生点周围随机偏移玩家的出生位置。这可以防止所有玩家出生时彼此重叠，在拥挤场景中看起来尤其糟糕。 **最大偏移** 值是在 X 和 Z 轴上相对于原始出生点的最大可能距离。

将 **摄像机目标** 以控制玩家进入你的场景时面向的方向。这让你能更好地掌控他们的第一印象，并可帮助引导他们朝特定方向前进。默认情况下，它指向 `{x: 8, y:1, z:8}`，即单地块场景的中心，或较大场景中左下角地块的中心。

点击 **添加出生点** 来列出你想要的任意多个出生点。玩家会随机出现在其中一个出生点。

### JSON 中的出生点

出生点也可以通过 `scene.json` 文件，在 `spawnPoints` 字段中，指向你自己的流媒体基础设施。

```json
  "spawnPoints": [
    {
      "name": "spawn1",
      "position": {
        "x": 5,
        "y": 1,
        "z": 4
      }
    }
  ],
```

一个场景可以有多个出生点。这在大型场景中尤其有用。要设置多个出生点，只需将它们列为数组即可。

```json
  "spawnPoints": [
    {
      "name": "spawn1",
      "position": {
        "x": 5,
        "y": 1,
        "z": 4
      }
	},
	{
      "name": "spawn2",
      "position": {
        "x": 3,
        "y": 1,
        "z": 1
      }
    }
  ],
```

当有多个出生点时，会选择最接近玩家所指坐标的那个。

如果某个出生点被标记为 `default`，那么无论它是否最近，都会始终使用它。如果多个出生点被标记为 `default`，则会选择最近的那个。

```json
  "spawnPoints": [
    {
      "name": "spawn1",
      "default": true,
      "position": {
        "x": 5,
        "y": 1,
        "z": 4
      }
	},
	{
      "name": "not-used",
      "position": {
        "x": 3,
        "y": 1,
        "z": 1
      }
    }
  ],
```

**出生区域**

你可以将场景中的整个区域设置为出生点。通过为位置的每个维度指定一个由两个数字组成的数组，玩家将出现在该范围内的随机位置。这有助于防止进入的玩家彼此重叠。请注意，三个维度必须使用相同的格式：要么全部是单个数字，要么全部是两个数字的数组。要固定某个维度，请使用两个相同数字组成的数组，例如 `"y": [1,1]`.

```json
  "spawnPoints": [
    {
      "name": "region",
      "position": {
        "x": [1,5],
        "y": [1,1],
        "z": [2,4]
      }
    }
  ],
```

在上面的示例中，玩家可能会出现在一个正方形内，其四个角位于 *1,1,2* 和 *5,1,4*.

一个场景也可以有多个出生区域，就像它可以有多个出生点一样。

```json
  "spawnPoints": [
    {
      "name": "region1",
      "position": {
        "x": [1,5],
        "y": [1,1],
        "z": [2,4]
      }
    },
      {
      "name": "region2",
      "position": {
        "x": [1,5],
        "y": [1,1],
        "z": [6,8]
      }
    }
  ],
```

**旋转**

你还可以指定玩家出生时的旋转方向，使他们面向特定方向。

只需添加一个 `cameraTarget` 字段到出生点数据中。 `cameraTarget` 的值应引用空间中的某个位置，并使用 *x*, *y* 和 *z* 相对于场景的坐标，就像 `位置` 字段中，指向你自己的流媒体基础设施。

```json
  "spawnPoints": [
    {
      "name": "spawn1",
      "position": {
        "x": 5,
        "y": 1,
        "z": 4
      },
      "cameraTarget": {
        "x": 10,
        "y": 1,
        "z": 4
      }
    }
  ],
```

此示例会让玩家出生在 *5, 1, 4* ，面向东，朝向 *10, 1, 4*。如果出生位置是一个范围，玩家的朝向将始终匹配所指示的目标。如果有多个出生点，每个都可以有自己独立的目标。

## 所需权限

该 `requiredPermissions` 属性管理着各种可控功能，这些功能可能被滥用并损害玩家体验。

{% hint style="warning" %}
**📔 注意**：权限仅在 [便携体验](/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/portable-experiences.md) 和 [智能穿戴设备](/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/smart-wearables.md)中才相关。普通场景（无论是在地块还是在 Worlds 中）不受这些权限影响，可以自由使用相应功能。
{% endhint %}

除非在 `scene.json` 文件。

```json
"requiredPermissions": [
    "ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE",
		"OPEN_EXTERNAL_LINK",
  ],
```

可以请求以下权限：

* `ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE`：指 [移动玩家](/creator/content-creator-zh/chang-jing-sdk7/jiao-hu-xing/tou-xiang/move-player.md)
* `ALLOW_TO_TRIGGER_AVATAR_EMOTE`：指 [在玩家头像上播放表情动作](/creator/content-creator-zh/chang-jing-sdk7/jiao-hu-xing/tou-xiang/avatar-animations.md)
* `ALLOW_MEDIA_HOSTNAMES`: *（旧版）* 指流式传输媒体（例如 [视频](/creator/content-creator-zh/chang-jing-sdk7/mei-ti/video-playing.md) 或 [音频](/creator/content-creator-zh/chang-jing-sdk7/mei-ti/audio-streaming.md)）来自外部域名。
* `USE_WEB3_API`：指与玩家浏览器钱包交互，以进行交易或签名消息。
* `USE_FETCH`：指使用 `fetch` 或 `signedFetch`
* `USE_WEBSOCKET`：指与第三方服务器建立 websocket 连接
* `OPEN_EXTERNAL_LINK`：指提示玩家打开外部网站链接

如果某个 `requiredPermissions` 属性在你的 `scene.json` 文件中不存在，请在 JSON 树的根级别创建它。

当使用 `ALLOW_MEDIA_HOSTNAMES`，还要包含一个 `allowedMediaHostnames` 字段于根级别，列出场景允许流式传输媒体的域名：

```json
"requiredPermissions": [
    "ALLOW_MEDIA_HOSTNAMES"
  ],
"allowedMediaHostnames": [
    "somehost.com",
    "otherhost.xyz"
  ],
```

{% hint style="warning" %}
**📔 注意**: `ALLOW_MEDIA_HOSTNAMES` 和 `allowedMediaHostnames` 是旧版设置，你不应该需要添加它们。它们只在旧版本的网页客户端中生效；当前的 Decentraland 客户端无需它们也能播放外部媒体。
{% endhint %}

## 场景地块

当 [部署](/creator/content-creator-zh/chang-jing-sdk7/fa-bu/publishing.md) 场景时，内容会上传到场景配置中分配的坐标。一个场景可以包含单个地块，也可以包含多达数十个地块的列表。

可在 Scene Editor 中场景菜单的第二个标签页里进行编辑。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-54a1901635efda3371172e647c03614733baca17%2Fscene-parcels-3x3.png?alt=media\&token=e7133392-8474-4127-b075-5a3f4e7a4e8d)

使用下拉菜单并点击 **应用布局** 来更改场景的尺寸。你也可以点击每个单独的地块，将其从布局中切换关闭。

![](https://2460066822-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-bbc2ecb567600843892a8c8873aaa70107e66839%2Fscene-parcels-toggled.png?alt=media\&token=aa4c4612-48ac-458d-afec-453d5168d1e8)

默认场景的坐标设置为 *0,0*。在离线开发场景时，你无需更改这一点，除非你需要占用多个地块。在部署到你拥有部署权限的坐标之前，你需要更改它。

你也可以在 `scene.json` 文件，有几点需要考虑：

```json
 "scene": {
    "parcels": [
      "54,-14"
    ],
    "base": "54,-14"
  }
```

该 `base` 字段定义了要将哪个地块视为基准地块。如果你的场景只有一个地块，基准应为该地块。如果你的场景有多个地块，基准应为左下角（西南）地块。所有实体位置都以该地块的西南角为参照进行测量。

要在场景预览中显示多个地块，请列出你打算使用的所有地块。它们不必一定是你最终部署到的精确地块，但它们应彼此相邻并按相同的相对位置排列。

```json
 "scene": {
    "parcels": [
      "54,-14",  "55,-14"
    ],
    "base": "54,-14"
  }
```

{% hint style="warning" %}
**📔 注意**：你能设置的最大场景尺寸是 300 x 300 个地块（总计 90,000 个地块）。
{% endhint %}

### 通过命令行设置地块

你可以通过运行 `npx update-parcels` 命令来设置场景中的地块。这对于大型场景尤其有用，因为你无需逐一列出涉及的每个地块。

{% hint style="warning" %}
**📔 注意**: `update-parcels` 是第三方社区工具，它不属于官方 Decentraland SDK，也不由 Decentraland Foundation 维护。
{% endhint %}

**单个地块**

传入一个场景坐标参数。此坐标也会被设置为基准地块。

`npx update-parcels <parcel>`

例如：

`npx update-parcels 15,-26`

**多个地块**

传入两个参数：西南地块和东北地块。西南地块也会被设置为基准地块。

`npx update-parcels <parcel> <parcel>`

{% hint style="info" %}
**💡 提示**：西南地块始终是两个 *X* 和 *Y* 坐标值都最小的那个地块。
{% endhint %}

例如：

`npx update-parcels 15,-26 17,-24`

此命令会生成一个 3x3 的场景，其基准地块位于 `15,-26`.

**自定义基准地块**

传入三个参数：西南地块、东北地块，以及要用作基准地块的那个地块。

`npx update-parcels <parcel> <parcel> <parcel>`

{% hint style="warning" %}
**📔 注意**：基准地块必须是场景中的某个地块。
{% endhint %}

**非方形场景**

上述命令都会生成矩形场景。Decentraland 场景可以是 L 形或其他配置。你可以先生成一个更大的正方形，再使用 `npx update-parcels` 然后手动从 `scene.json` 文件。

{% hint style="warning" %}
**📔 注意**：基准地块必须是场景中的某个地块。
{% endhint %}

## 天空盒时间

你可以为你的场景设置一个固定的时间。所有玩家都会以该时间看到场景，天空盒不会跟随昼夜循环变化。

打开场景设置并点击 **设置** 选项卡以找到 **天空盒** 部分。取消勾选 **自动** 选项，然后设置你想要的时间。

你也可以在场景代码中设置天空盒时间。为此，请将以下部分添加到你的 `scene.json` 中在根级别添加以下内容：

```json
 "skyboxConfig": {
    "fixedTime": 36000
  }
```

该数字指从一天开始算起的秒数，范围从 0（表示 *00:00*）到 86400（表示 *24:00*）。任何高于 86400 的数字也会被视为午夜。

以下是一些有效值的更多示例：

* 0 秒 => *00:00*
* 21600 秒 => *06:00*
* 43200 秒 => *12:00*
* 64800 秒 => *18:00*
* 86400 秒 => *24:00*

## 景观地形

发布到 [Decentraland World](https://github.com/decentraland/docs/tree/main/creator/worlds/about.md) 的场景会被自动生成的草地、树木和海洋景观环绕。如果这种景观与你的场景美学不符，例如漂浮在开阔水面上或太空中的场景，你可以将其禁用。为此，请将以下字段添加到你的 `scene.json` 中在根级别添加以下内容：

```json
{
	"landscapeTerrain": false
}
```

关闭 `landscapeTerrain` 设置为 `false`，场景地块之外将不会渲染任何内容，玩家只能看到场景周围的天空盒。移除周围地形还可以释放渲染资源，有助于让你的场景运行更流畅。

如果未设置该字段，默认值为 `true` ，景观将照常显示。

{% hint style="warning" %}
**📔 注意**：此字段仅适用于包含单个场景的 World。它在 Genesis City 中会被忽略，因为那里的周边环境始终由相邻地块决定。你也可以在本地预览场景时使用它，以检查场景在没有景观时的外观。
{% endhint %}

## World 配置

在发布到 [Decentraland World](/creator/content-creator-zh/chang-jing-sdk7/fa-bu/publishing-options.md#decentraland-worlds)时，你可以在你的 `scene.json` 文件中使用 `worldConfiguration` 对象。

### 基本 World 配置

要发布到某个 World，你必须在你的 `scene.json`:

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth"
	}
}
```

该 **name** 中指定 NAME 或 ENS 域名。所指定的名称可以是 Decentraland NAME 或 ENS 域名，并且必须由签署部署的钱包拥有（或者由通过访问控制列表授予权限的任何钱包拥有）。

### 通信服务配置

该 `fixedAdapter` 属性指示场景应使用哪个通信服务。暂时仅允许 `offline:offline` 值。设置后，场景将完全没有通信服务，加入该 World 的每个用户都将始终独自一人。如果未设置，Worlds 内容服务器将根据其配置生成适当的值。

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth",
		"fixedAdapter": "offline:offline"
	}
}
```

{% hint style="warning" %}
**📔 注意**：设置 `fixedAdapter` 为 `"offline:offline"` （或在 Creator Hub 的 World 设置中启用 **单人模式** ）会禁用直播。流媒体功能依赖通信层向观众传递视频。如果你需要在你的 World 中进行直播，请不要使用此选项。
{% endhint %}

### Places 列表配置

除非你选择退出，否则所有 Worlds 都会自动列在 Places 页面上。如果你希望让你的 Worlds 不被 Places 索引，可以添加以下内容：

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth",
		"placesConfig": {
			"optOut": true
		}
	}
}
```

### 完整示例

以下是包含所有 World 配置选项的完整示例：

```json
{
	"worldConfiguration": {
		"name": "my-name.dcl.eth",
		"fixedAdapter": "offline:offline",
		"placesConfig": {
			"optOut": true
		}
	}
}
```

参见 [发布到 Worlds](/creator/content-creator-zh/chang-jing-sdk7/fa-bu/publishing.md#publishing-to-worlds) ，以获取有关部署到 Worlds 的更多信息。

## 从场景代码获取元数据

[Scene API 参考](https://js-sdk-toolchain.pages.dev/modules/js_runtime_apis.__system_Scene_)

你可能需要场景代码来访问场景元数据中的字段，例如场景部署到的地块或出生点位置。这对于旨在被复制的场景，或打算在其他场景中复用的代码尤其有用。对于需要知道场景边界在哪里的库来说，这也非常有用。

要访问这些数据，首先导入 `getSceneInformation` 函数：

```ts
import { getSceneInformation } from '~system/Runtime'
```

然后你可以调用 `getSceneInformation()` 函数，它会返回一个 JSON 对象，其中包含 scene.json 文件的大部分内容。下面的示例展示了如何从该函数的响应中访问几个较常见的字段：

```ts
import { getSceneInformation } from '~system/Runtime'

executeTask(async () => {
  const sceneInfo = await getSceneInformation({})

  if (!sceneInfo) return
  console.log("SCENE INFO: ", sceneInfo)
})
```

{% hint style="warning" %}
**📔 注意**: `getSceneInformation()` 需要作为一个 [异步函数](/creator/content-creator-zh/chang-jing-sdk7/bian-cheng-mo-shi/async-functions.md)运行，因为响应返回数据时可能会延迟零点几秒或更久。不要使用已弃用的 `getSceneInfo()` 函数。
{% endhint %}

由以下函数返回的对象 `getSceneInformation()` 包含以下内容：

* `baseUrl`：场景内容托管所在的基础 URL
* `内容`：一个数组，包含场景的所有文件及其哈希，可与 baseUrl 一起用于检索它们。
* `metadataJson`：场景 scene.json 的完整内容，形式为字符串。你必须对其进行解析以获取特定值。
* `urn`：整个场景的唯一 urn。

下面的示例会解析来自 `metadataJson` 以获取 scene.json 文件中属性的值

```ts
import { getSceneInformation } from '~system/Runtime'

executeTask(async () => {
	const sceneInfo = await getSceneInformation({})

	if (!sceneInfo) return

	const sceneJson = JSON.parse(sceneInfo.metadataJson)
	const spawnPoints = sceneJson.spawnPoints
	const parcels = sceneJson.scene.parcels
	console.log({ parcels, spawnPoints })
})
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-zh/chang-jing-sdk7/xiang-mu-lei-xing/scene-metadata.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
