Unity ECS
ECS
lrh3025
游戏
展开
-
Unity Entity Component System 翻译文档目录
Core ECS 核心概念Entities 实体Components 组件System 系统Accessing entity dataUsing IJobForEachUsing IJobChunkUsing ComponentSystem and ForEachManual iterationEntiy QueryComponent WriteGroupsVersi...原创 2019-12-14 10:57:47 · 492 阅读 · 0 评论 -
Unity Entity Component System --- TransformSystem
Section 1: Non-hierarchical Transforms(Basic)LocalToWorld(float4X4)表示从本地到世界空间的变换。这是一种经典的表示方式,也是系统中唯一用来访问本地空间的组件。一些DOTS特性,只有存在LocalToWorld时才能执行。例如,RenderMesh组件依赖LocalToWorld来渲染实例。如果只有一个LocalToWorl...翻译 2019-12-21 17:28:22 · 955 阅读 · 0 评论 -
Unity Entity Component System --- Creating Gameplay
Creating Gameplay该部分讨论用Unity编辑器创作基于DOTS的游戏和其它应用,以及如何利用ECS提供的system和components来实现你游戏。Systems包括:Unity.Transforms — 提供定义世界空间方位的组件,3D对象层次,以及管理它们的系统。Unity.Hybrid.Renderer — 提供在运行时渲染ECS 实体的系统和组件。Auth...翻译 2019-12-21 17:26:33 · 386 阅读 · 0 评论 -
Unity Entity Component System --- System Update Order
通过Component System Groups来指定systems的执行顺序。可以通过在系统的类的定义上使用[UpdateInGroup] Attribute来指定该系统在哪个group中执行。还可以使用[UpdateBefore] [UpdateAfter]来指定在该Group内的执行顺序。ECS框架创建了一组默认的system groups,可以利用这些groups来控制我们的系统的执行...翻译 2019-12-14 15:00:53 · 466 阅读 · 0 评论 -
Unity Entity Component System --- Entity Command Buffer
EntityCommandBuffer解决了2个问题:当你再Job中时,不可以访问EntityManager当访问EntityManager时(比如,创建一个Entity)导致导致访问的Components数组失效,及EntityQuery对象失效。Entity Command Buffer抽象允许我们将改变保存到队列(从Job或者主线程),然后在稍后在主线程中应用。有2中应用EntityC...翻译 2019-12-14 14:47:13 · 376 阅读 · 0 评论 -
Unity Entity Component System --- JobComponentSystem
Automatic job dependency management自动管理Job依赖。管理Job的依赖是件很麻烦的事。而JobComponentSystem帮我们自动处理了。规则很简单:不同系统的Jobs可以并行地访问同样类型的IComponentData。但是如果有一个Job在向该数据写操作,则这些Jobs不能并行执行,必须根据依赖调度Jobs。public class Rotatio...翻译 2019-12-14 14:44:34 · 572 阅读 · 0 评论 -
Unity Entity Component System -- Component Systems
Component System 执行entities的逻辑。它不能包含数据。可以看作老版本的Component,只是它只有方法,没有数据。一个Component System负责更新所有的匹配的entities(由EntityQuery进行匹配)。ComponentSystem是个纯虚类,通过实现相关接口执行我们的逻辑。...翻译 2019-12-14 14:41:02 · 206 阅读 · 0 评论 -
Unity Entity Component System --- System 系统
SystemsSystem在ECS中执行逻辑,将component data从一个状态变换到下个状态,比如一个系统,可以对所有移动实体执行运算,根据其方向,速度,时间计算新的位置。ECS支持多种不同的systems,你可以实现ComponentSystem和JobComponentSystem来为entities执行逻辑。这两种Systems可以容易地选择和遍历拥有指定components的e...翻译 2019-12-14 14:38:44 · 449 阅读 · 0 评论 -
Unity Entity Component System --- Components
Component用来表示你的数据。Entity只是一个标识,用来将Component收集到一起。System提供行为。实际上,Component是个struct结构体,这些结构体继承以下接口:IComponentData – 用于general purpose 及 chunk components。IBufferElementData – 用于为Entity创建dynamic buffer数...翻译 2019-12-14 14:35:31 · 223 阅读 · 0 评论 -
Unity Entity Component System --- Chunk Components
Chunk component data可以使用chunk components将特定的chunk(内的entities)和data关联起来。Chunk components包含的数据,将应用到指定chunk中的所有entities上。例如,如果有一些表示3D对象的entities(它们在一个或者及个chunk里),你可以将它们的bounding box,存储到一个chunk componen...翻译 2019-12-14 14:26:22 · 418 阅读 · 0 评论 -
Unity Entity Component System --- Dynamic Buffer Components
Dynamic BuffersDynamicBuffer是一种支持可变大小的弹性buffer component data,可以存放一定数量的元素数据。如果空间不足会分配堆内存块来扩充。该方法的内存管理是自动的。DynamicBuffer的内存是由EntityManager管理的,所以当DynamicBuffer component删除时,其内存也会被释放。Fixed Array 固定长度数...翻译 2019-12-14 13:48:49 · 861 阅读 · 0 评论 -
Unity Entity Component System --- System State Components
SystemStateComponentData的作用,是跟踪资源在系统内部的状态,以提供机会在适当的时机创建和销毁资源,而不是依靠某个回调函数。SystemStateComponentData和SystemStateSharedComponentData跟ComponentData以及SharedComponentData一样,各自都有一个重要的概念:SystemStateComponent...翻译 2019-12-14 13:41:10 · 570 阅读 · 0 评论 -
Unity Entity Component System --- Shared Component Data
Shared components 是一种特殊的数据组件,可以根据shared componet的不同数值,来将entities进一步细分。当将一个shared component添加到一个entity,Entity Manager会将所有共享该shared component(值相同,则是一个),存储到一个Chunk。Shared components允许你的系统一起处理处理相似的entitie...翻译 2019-12-14 13:18:17 · 1224 阅读 · 0 评论 -
Unity Entity Component System --- General Purpose Components 组件
Unity中的ComponentData(ECS中的component)对象,是个仅存储一个Entity数据的结构体。ComponentData不能包含方法,除了访问数据的函数。所有的游戏逻辑都应该在System中实现。这相当于是老的Unity中的Component,只是只包含变量。ECS提供了 IComponentData,可以实现该接口。IComponentData传统的Unity co...翻译 2019-12-14 13:14:16 · 200 阅读 · 0 评论 -
Unity Entity Component System 3 --- Worlds
Worlds一个World(世界)包含一个Entity Manger和一系列的ComponentSystems,可以在该World中创建需要的对象。通常建议建立2个World,一个是模拟(逻辑)World,和一个渲染World。游戏执行时,ECS默认会创建一个World,并创建所有的有效的ComponentSystem。也可以禁止自动创建World,而根据你自己的代码配置创建你的World。...原创 2019-12-14 13:07:08 · 317 阅读 · 0 评论 -
Unity Entity Component System 4 --- System 系统
SystemsSystem在ECS中执行逻辑,将component data从一个状态变换到下个状态,比如一个系统,可以对所有移动实体执行运算,根据其方向,速度,时间计算新的位置。ECS支持多种不同的systems,你可以实现ComponentSystem和JobComponentSystem来为entities执行逻辑。这两种Systems可以容易地选择和遍历拥有指定components的e...翻译 2019-11-29 23:02:12 · 343 阅读 · 0 评论 -
Unity Entity Component System 3 --- Components 组件
ComponentsComponent用来表示你的数据。Entity只是一个标识,用来将Component收集到一起。System提供行为。实际上,Component是个struct结构体,这些结构体继承以下接口:IComponentData – 用于general purpose 及 chunk components。 IBufferElementData – 用于为Entity创...翻译 2019-11-16 22:31:02 · 1067 阅读 · 0 评论 -
Unity Entity Component System 2 --- Entities 实体
EntitiesEntities在ECS中,表示游戏或者应用中一个具体的实体。实体既没有行为也没有数据,它只是一个标识(可能就是个整数),表示将哪些数据(组件)组织到一起。System提供行为,Component存储数据。Entity其实是个ID,你可以认为它是个超级轻量化的,甚至连name都没有的GameObject。Entity IDs是固定的,这样才可以用它在组件或者实体间建立引用关...翻译 2019-11-16 22:23:41 · 494 阅读 · 0 评论 -
Unity Entity Component System 1 --- 核心概念
英文文档地址:https://docs.unity3d.com/Packages/com.unity.entities@0.1/manual/index.html翻译进行中OverviewEntity Component SystemEntity Component System 是Unity面向数据的技术栈(技术栈:一系列相关技术集合)。它有三个概念:· Entities -...翻译 2019-11-02 13:52:38 · 667 阅读 · 0 评论