摘要: 使用块组件将数据与特定块相关联。 块组件包含适用于特定块中所有实体的数据。例如,如果您有表示按邻近度组织的 3D 对象的实体块,您可以使用块组件为它们存储一个集合边界框。块组件使用接口类型IComponentData。 添加和设置块组件的值 尽管块组件可以具有对单个块唯一的值,但它们仍然是块中实体原 阅读全文
posted @ 2021-09-24 00:59 alps_01 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 动态缓冲组件 使用动态缓冲区组件将类数组数据与实体相关联。动态缓冲区是 ECS 组件,可以容纳可变数量的元素,并根据需要自动调整大小。 要创建动态缓冲区,首先声明一个实现IBufferElementData并定义存储在缓冲区中的元素的结构。例如,您可以将以下结构用于存储整数的缓冲区组件: publi 阅读全文
posted @ 2021-09-24 00:47 alps_01 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 您可以使用SystemStateComponentData来跟踪系统内部的资源,并根据需要创建和销毁这些资源,而无需依赖单个回调。 SystemStateComponentData和SystemStateSharedComponentData类似于ComponentData和SharedCompon 阅读全文
posted @ 2021-09-24 00:32 alps_01 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 共享组件是一种特殊的数据组件,您可以使用它根据共享组件中的特定值(除了它们的原型之外)细分实体。当您向实体添加共享组件时,EntityManager 会将具有相同共享数据值的所有实体放入同一块中。 共享组件允许您的系统一起处理类似的实体。例如,作为Rendering.RenderMeshHybrid 阅读全文
posted @ 2021-09-24 00:29 alps_01 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 序幕 请注意,混合组件与Project Tiny不兼容。 目的 Unity 的许多现有功能还没有 DOTS 等价物(目前)。因此,在许多情况下,DOTS 项目将是混合的:经典游戏对象和 ECS 的混合。 混合组件提供了一种从 ECS 代码方便地访问 UnityEngine 组件的方法。它们最初旨在处 阅读全文
posted @ 2021-09-24 00:13 alps_01 阅读(163) 评论(0) 推荐(0) 编辑
摘要: ECS 组件(不是托管UnityEngine.Component类的实例)是一个结构体,它只包含实体的实例数据。ECS 组件不应包含实用程序以外的方法来访问结构中的数据。您应该在系统中实现所有游戏逻辑和行为。就面向对象的 Unity 系统而言,这类似于 Component 类,但只包含变量。 Uni 阅读全文
posted @ 2021-09-24 00:09 alps_01 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 组件是实体组件系统架构的三个主要元素之一。它们代表您的游戏或应用程序的数据。实体是索引您的组件集合的标识符,而 [系统] 提供行为。 ECS 中的组件是具有以下“标记接口”之一的结构: IComponentData — 用于通用和 [块组件]。 IBufferElementData — 将 [动态缓 阅读全文
posted @ 2021-09-24 00:06 alps_01 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 世界 一个世界组织实体为孤立的群体。一个世界同时拥有一个EntityManager和一组Systems。在一个世界中创建的实体仅在该世界中有意义,但可以转移到其他世界(使用EntityManager.MoveEntitiesFrom)。系统只能访问同一世界中的实体。您可以创建任意数量的世界。 默认情 阅读全文
posted @ 2021-09-24 00:03 alps_01 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 要读取或写入数据,首先必须找到要更改的数据。ECS 中的数据存储在组件中,ECS 根据它们所属实体的原型在内存中将这些组件组合在一起。您可以使用EntityQuery获取 ECS 数据的视图,其中仅包含给定算法或流程所需的特定数据。 您可以使用EntityQuery执行以下操作: 运行作业以处理选定 阅读全文
posted @ 2021-09-24 00:02 alps_01 阅读(715) 评论(0) 推荐(0) 编辑