编辑器"/>
[Unity ECS] Unity DOTS 编辑器
介绍
了解 Unity 编辑器如何在使用 DOTS 进行开发时为您提供支持对于加快工作流程和获取调试信息非常重要。在这篇文章中,我将介绍可用于 DOTS 的编辑器功能。
要跟随这篇文章,您将需要以下软件包。
- Entities:安装此包及其依赖项将添加使用 DOTS 开发所需的一切,例如burst编译器和Job System。
- DOTS Editor: 虽然是可选的,但此包将为 DOTS 添加额外的编辑器功能,将在此处介绍。
Entity Debugger
可以在以下位置找到:Window > Analysis > Entity Debugger
实体调试器给出了关于世界状态的信息。它可以告诉你哪些实体存在,它们包含哪些组件,哪些系统在它们上面运行,哪些块被使用。我们将对实体调试器的每个部分进行介绍。
-
World selection:
允许您选择世界以显示其包含的实体和系统。您可以选择 Show Full Player Loop 来显示所有世界,选择 Show Inactive Systems 来显示未运行的系统。 -
System details:
这一部分将允许你查看所有的系统组和它们所包含的系统。请注意,系统是按执行顺序排列的。
对于每个系统,它都会以主线程花费的毫秒为单位给出有用的性能信息。你也可以禁用个别系统,防止它们运行。选择一个系统将显示该系统所运行的实体和组件,并允许你查看块状信息。 -
Entity inspector:
这将显示所有符合指定系统查询的实体。
请注意,组件的颜色是基于只读、读写或减法(不能包含),但预计这将在未来得到扩展,因为目前并非所有查询类型都有颜色代码。
选择一个实体将在检查器中显示其组件值,如图右边所示。 -
Chunk info:
DOTS中的块一开始可能非常令人困惑,所以为了正确解释这一部分,我将首先对块进行简化解释。一个块是一个预先分配好的16kB的内存块,它有一个原型,定义了哪些组件在这个块中。在此基础上,块计算出它可以容纳多少个这种原型的实体。当实体被添加时,它们会被放入该块,直到它被填满,这时就会创建一个新的块。
块信息部分显示了有多少种原型与系统查询相匹配,以及每种原型有多少块。在底部,它还以直方图的形式显示了这些块的饱满程度。
在这张图片中,我们匹配了一个有3个块的原型。这个原型的一个块可以容纳104个实体。目前有2个块是满的(右边的条形图),1个块有13个实体(左边的条形图)。
实时链接模式
可以在下面找到:DOTS > Live Link Mode
实时链接允许在编辑模式下转换为DOTS。为了使实时链接发挥作用,你需要在一个子场景中添加你的对象。Hierarchy > Right click > New SubScene From Selection。在子场景中选择一个对象,就可以看到它的ECS组件,现在可以在实体调试器中找到这个对象。在游戏模式中保持子场景的开放,现在也可以让你在不重新启动的情况下对实体进行修改。
实时链接有两种场景视图模式。 SceneView:Live Game State 使场景视图在编辑模式下显示最终转换结果,将场景变成混合渲染场景。 SceneView:Editing State 将改为保留编辑器渲染器而不应用完整转换。此模式将渲染 Gizmo,但不会应用在转换时对实体所做的任何更改。
Burst Inspector
可以在以下位置找到:Jobs > Burst > Open Inspector…
Burst 检查器是一个有用的工具,用于低级别的性能优化。大多数人将不能或不需要阅读编译器的输出。然而,LLVM优化诊断仍然是有趣的,可以看看。它以一种人类可读的方式提供编译器信息,例如可以用来检查你的代码是否被矢量化了。
在这里您可以看到编译器将第 35 行标记为无法向量化。
在代码行发生变化后,第 35 行被标记为矢量化。
DOTS 编译器
可以在以下位置找到: DOTS > DOTS Compiler > Open Inspector…
DOTS 编译器可以显示 DOTS 生成的代码。这意味着它能够向您显示使用 [GenerateAuthoringComponent] 标记时生成的代码。但不仅如此,它还能够显示从 Entities.ForEach 或 Job.WithCode 代码生成的代码。这对于查看最终工作的实际情况非常有用。
其他
为了进一步控制编译过程,您可以在 Jobs 下启用和禁用与调试和安全有关的多个设置。这些不言自明,所以我将不再深入。
要加快在编辑器中按下播放时的加载时间,您可以在以下位置禁用场景和域重新加载:Edit > Player Settings > Editor > Enter Play Mode Settings。这不以任何方式直接连接到 DOTS。但它的主要缺点在很大程度上不适用于 DOTS 代码,同时仍为您提供提高速度的好处。有关更多信息,请参阅文档。
更多推荐
[Unity ECS] Unity DOTS 编辑器
发布评论