# 【宣布 SDK 7 Beta】SDK 7 第一个版本现已向公众开放——享受新的 UI、改进的性能、最新版本的 TypeScript、扩展的外部库兼容性等等！

By [Decentraland 中文社区](https://paragraph.com/@decentraland-2) · 2023-03-08

---

![](https://storage.googleapis.com/papyrus_images/aa9c42d50297d055ee963880abef9d3f023335fa1bf0e5aaec6e56c27a11668c.png)

_2023-3-6_

去年 7 月，Decentraland 的 SDK 7 发布了 SDK 7 宣言。在宣言中，列出了 SDK 7 最终版本计划的完整详细愿景——请在[此处](https://mirror.xyz/0x85A07dC63fF774b86eEdB62563d05D72bcbE8854/QSEM-5GpA34OFKvKsCVeYJPCF0-li6Cdkp1s3PzULgs)阅读。 SDK 7 背后的灵感是让 Decentraland 的 SDK 更接近最初为平台设想的理想化 SDK。最终，Decentraland 的 SDK 应该作为一个开放协议来创建元宇宙内容——对任何可能想要采用它的平台开放——任何人都可以使用。

现在，Decentraland 的 SDK 7 测试版终于准备好亮相了！这个长期项目需要从头开始重编写很多东西，以使 SDK 的基础尽可能稳固。重建时牢记三个关键原则：可用性、性能和可移植性。

由于这只是 SDK 7 的测试版，它还不包括完成后计划的全套功能，但创建者会注意到一些令人愉快的改进。现在的主要目标是为创建一个强大的编辑器铺平道路，在这个编辑器中，创建者将能够同时使用可视化界面和代码。最近，Decentraland Editor 的第一个版本发布了。该工具有助于简化和简化场景开发过程——但这种简化仅仅是个开始。编辑器的最终计划是为那些需要它的人提供完全可视化的编辑，这意味着编码知识将不再是场景开发所必需的，从而使所有人更容易在 Decentraland 中进行构建。下一个版本的编辑器将建立在 SDK 7 设置的基础上。

除了改进场景开发流程外，SDK 7 还应该使在 Decentraland 生态系统上创建各种替代项目变得更加容易，对性能产生积极影响，并为更强大和简化的多人游戏功能铺平道路——举几例它的一些好处！

### 截至目前

早在去年 11 月下旬，SDK 7 的 alpha 版本就发布了，让热切的 DCL 社区开始测试和修改它。您的反馈非常宝贵，感谢您对其进行测试并分享您的想法！

PatMac 的工作尤其值得一提，因为他使用 SDK 7 重写了他非常有用的 DCL-Dash 库。在旧版本中，这个库对其他创建者帮助很大，简化了一些复杂的任务。目前 SDK 7 的库仍在建设中，但一旦公开，在新 SDK 上构建相同的库也将帮助其他人抢先一步！

自 SDK 7 的 alpha 版本以来，应用了大量的改进和修复。此外，在 SDK 7 测试版中添加了一些基本功能，例如视频流和 UI 点击事件，这些功能在 alpha 版本中是不包含的。

进入 SDK 7 的 Beta 阶段意味着妥协：将不惜一切代价避免对可能破坏已构建内容的代码进行更改。计划添加到 SDK 7 之上的所有有用的简化层尚未实现，但是随着新版本的发布，现有代码应该仍然有效。在有关该主题的[文档部分](https://docs.decentraland.org/creator/releases/version-agreement/)中阅读关于什么被认为是 alpha 和 beta 以及一般版本控制的基金会政策。

如果您一直在使用 SDK 7 的 Alpha 版本进行实验，您会发现在转到 Beta 版本时有许多重大更改。大多数问题是由较小的语法更改引起的，但您可以查看[发行说明](https://github.com/decentraland/js-sdk-toolchain/releases)中的​​完整更改列表，并相应地进行调整。

### 新功能

如上所述，SDK 7 将提供的大部分价值尚未随编辑器和其它功能一起提供。但是，您已经可以在此版本中享受许多特性和功能！

*   基于 FlexBox 的全新 UI 系统：使用类似于 HTML 的动态标签来构建您想要的任何 UI。新的 UI 语法包括方便的抽象，例如下拉菜单和输入框默认类型以及 9 切片。查看这个[简单场景](https://github.com/decentraland-scenes/leaderboard-ui-sdk7)，了解它的外观示例
    
*   由于优化了内部消息流和 UI 系统，性能得到提升。有关比较，请参见下面的附录。
    
*   使用最新版本的 TypeScript (ES6)：这使您可以访问更强大的功能，例如 Map() 函数。
    
*   更多的外部 JavaScript 和 TypeScript 库现在可以兼容并可以在 Decentraland 场景中使用，因为它不再局限于那些与 AMD 一起打包的库。
    
*   各种额外的小福利：
    
    *   将实体附加到跟随所有骨架动画的玩家的手上。
        

![](https://storage.googleapis.com/papyrus_images/5cf7554c3737a17206fb5ace311ba927de6dec76fdd25fcb7133936eb733b5e3.gif)

*   在单个实体中支持多个不同的按钮事件，例如，拥有一个 NPC，您可以用 **E** 打招呼，用 **F** 交易，或者用鼠标左键击打。将鼠标悬停在 NPC 上时，所有三个选项都会出现。
    

![](https://storage.googleapis.com/papyrus_images/d106fa45ad363721bb45510738b54929ef3b9bbe5f1f22f5a442193cbaac2cac.jpg)

*   修改音频样本的音高。例如，您可以使用随机微小的音高变化来使重复出现的声音效果不那么单调，或者您可以使用它来构建一个完整的音乐交互界面。
    
    *   分别获取相机和头像的位置和旋转，这在第三人称相机模式下有所不同。
        
    *   图像纹理和视频纹理以相同的方向映射，消除了在同一屏幕中交替使用时会发生的常见令人沮丧的问题。
        

此外，您会发现 SDK 7 beta 的新语法通常更加简洁。如果您使用过旧版本的 SDK，可能需要一些时间来适应新语法，但它有其优雅之处，最终编辑器将能够为您编写出大部分代码。

### 试用 SDK 7 Beta

如果您想开始使用 SDK 7 创建场景，请下载适用于 Visual Studio Code 的 Decentraland Editor SDK7 扩展。请参阅[此处](https://docs.decentraland.org/creator/development-guide/sdk7/installation-guide/)的说明。

注意：现在编辑器有两个版本，**Decentraland Editor SDK6** 和 **Decentraland Editor SDK7**。顾名思义，每个版本的编辑器都适用于使用不同 SDK 版本构建的 Decentraland 场景。您可以在同一安装的 Visual Studio Code 中激活这两个扩展，并根据您正在使用的项目相应地使用它们。

**查看以下内容以了解有关 SDK 7 的更多信息：**

*   [SDK 7 宣言](https://mirror.xyz/0x85A07dC63fF774b86eEdB62563d05D72bcbE8854/QSEM-5GpA34OFKvKsCVeYJPCF0-li6Cdkp1s3PzULgs) [SDK 7 文档](https://docs.decentraland.org/creator/development-guide/sdk7/sdk-101/) - 在左侧菜单中查找 SDK 7 场景部分以获得更多选项
    
*   [SDK 7 示例](https://github.com/decentraland-scenes/sdk7-goerli-plaza) 注意：目前这些被安排到一个存储库中，每个文件夹一个。它们稍后将分别迁移到它们自己的中以便于克隆。
    
*   加入我们的定期技术 AMA 会议，在那里您可以直接向团队提问！在[此处](https://mirror.xyz/0x85A07dC63fF774b86eEdB62563d05D72bcbE8854/A35Q0JhJsPZqm8_7j56k1ebTuwOg6Ea7gpjX_vPJ9OQ)了解有关这些会议的更多信息，并查看[此页面](https://www.notion.so/Decentraland-Foundation-Technical-AMA-230fcf1ca1ec4d49922744fe91e6995d)以了解下一个日期的详细信息。
    
*   在 Decentraland 的 [Discord](https://decentraland.org/discord/) 上，加入 [sdk7-beta](https://discord.com/channels/417796904760639509/1047643035833479230) 频道分享任何问题或反馈。
    

如果您还没有尝试过 Decentraland Editor，它现在是开发 Decentraland 场景的最佳工具，适用于 SDK 7 和旧的 SDK 6，因此请务必在下次构建时对其进行测试。

**了解有关 Editor 的更多信息：**

*   [Editor 发布博文](https://mirror.xyz/0x85A07dC63fF774b86eEdB62563d05D72bcbE8854/CZFglmyJ__BNBK0ivGKe78X5DIdhS5wFZO1zMgWQRxU)
    
*     
    

**一旦您准备好使用 SDK 7，就可以使用它为您的** [**World**](https://mirror.xyz/0x85A07dC63fF774b86eEdB62563d05D72bcbE8854/wdr8gmcSDV7h1plqoRqhezeEV7O2-lsT_EAku1iPUTs) **创建场景，并通过**[**#DCLWorlds**](https://twitter.com/hashtag/DCLWorlds) **在 Twitter 上与社区分享！**

\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

附录：性能测试
-------

这个新版本的 SDK 使场景运行速度比以前显着加快，让您可以为您的玩家创造更丰富的体验，并让使用低端设备的玩家在访问您的内容时受到更少的限制。

您可以在下面找到测试一个简单场景的结果，该场景专门用于测试与引擎的通信，因为这在过去一直是主要瓶颈。这个场景在每次滴答时发送数千个位置更新，因为一大组立方体产生的波浪平滑地上下浮动。场景在 SDK 6 和 SDK 7 中构建相同，使用不同数量的浮动立方体来进一步强调场景。所有测试都在同一台机器上，在相同的条件下运行。

### 16x16 立方体（每帧 256 次更新）

SDK 6：42 帧/秒

![](https://storage.googleapis.com/papyrus_images/c72ec0e07c944a942b5af301b9001fff1f602e14508e273d0ae89001121e9356.gif)

SDK 7：60 帧/秒

![](https://storage.googleapis.com/papyrus_images/1a1219f6ee5e0c9c3b93abd10e9e29aacd55b97a4a432d1f148682119f267573.gif)

改进：40%

### 32x32 立方体（每帧 1024 次更新）

SDK 6：10 帧/秒（场景损坏）

![](https://storage.googleapis.com/papyrus_images/c2aa09d89069141d2f8325bcb6f3683db79023296cd7d9c7bb76ef23e8c218d8.gif)

SDK 7：40 帧/秒

![](https://storage.googleapis.com/papyrus_images/9032c9a817e13f6593ec58a24fd18c8063d41dde6e67edc1835f93312903b02f.gif)

改进：400%

您可以在 [\-69,-27](https://play.decentraland.org/?NETWORK=mainnet&position=-69%2C-27&ENABLE_ECS7=&explorer-branch=dev) (SDK 7) 和 [\-67,-27](https://play.decentraland.org/?NETWORK=mainnet&position=-67%2C-27&ENABLE_ECS7=&explorer-branch=dev) (SDK 6) 中找到部署在世界中的这些场景的 16x16 版本以运行您自己的测试。提示：将加载半径设置为 1 以避免同时加载它们。您还可以在 [Goerli Plaza 存储库](https://github.com/decentraland-scenes/sdk7-goerli-plaza)中找到此场景的 SDK 7 版本的代码。

Decentraland 场景的另一个众所周知的性能瓶颈一直是 UI。包含 UI 的任何场景的性能始终不尽如人意，随着在 UI 中添加或更改更多元素，这种情况会变得更糟。在 SDK 7 中，此瓶颈已大大减少。使用 SDK 7 构建了一个场景，专门用于对 UI 元素进行压力测试，该场景在每一帧中都创建了很多 UI 元素，这是一种极端且不切实际的场景，其设计并不美观。在这种情况下，很难在 SDK 版本之间进行同类比较，因为 UI 脚本发生了很大变化，但可以肯定的是，如果使用 SDK 6 重现同一场景，它将无法播放。

![](https://storage.googleapis.com/papyrus_images/5b67751d8d26e15d0b69afb1e8d647e310bdeafae3c616ede63ad0c9cbd65294.gif)

此示例场景使用与之前测试相同的机器和设置，同样以 **59 帧/秒**运行。

若要在此场景上运行您自己的测试，您可以在 [Goerli Plaza 存储库](https://github.com/decentraland-scenes/sdk7-goerli-plaza)中的“dbmonster”文件夹下找到它。

**选择您常用的频道加入与我们联系，关注Decentraland(MANA)的最新动态**

**DCL基金会全球社区： 【**[**Official Website**](https://decentraland.org/)】 【[**Telegram**](https://t.me/decentralandTG)】 【[**Blog**](https://blog.decentraland.org/)】 【[**Twitter**](https://twitter.com/decentraland)】 【[**Discord**](https://decentraland.org/discord/)】

**DCL中文社区： 【**[**Medium**](https://medium.com/@decentralandcn)**】用户指南 【**[**推特**](https://twitter.com/decentralandcn)】 **【**[**微博**](https://weibo.com/decentralandcn)**】** 【**微信群**】请加微信ID ChinWaan 【**微信公众号**】manalandcn

---

*Originally published on [Decentraland 中文社区](https://paragraph.com/@decentraland-2/sdk-7-beta-sdk-7-ui-typescript)*
