以下文档均来源于ECS官网:
https://docs.unity3d.com/Packages/com.unity.entities@0.0/manual/ecs_entities.html
ComponentData
Unity中的ComponentData(标准ECS术语中的组件)是一个包含 entity的数据实例的结构体。 ComponentData不能包含方法。根据旧的Unity系统来说,这有点类似于旧的Component类,但只包含变量。
ComponentData对应的接口名为IComponentData,您可以在代码中实现该接口来构建一个ComponentData。
IComponentData
传统的Unity组件(包括MonoBehaviour)是 object-oriented (面向对象)的类,包含行为的数据和方法。 IComponentData是一个纯ECS模式的组件,这意味着它不定义任何方法,只定义数据。 IComponentData是一个结构体而不是一个类,这意味着默认情况下被赋值时它使用按值拷贝,而不是引用拷贝。通常你可以使用以下模式来修改数据:
var transform = group.transform[index]; // Read
transform.heading = playerInput.move; // Modify
transform.position += deltaTime * playerInput.move * settings.playerMoveSpeed;
group.transform[index] = transform; // Write
IComponentData结构不能包含对托管对象的引用,因为所有的ComponentData都存在于简单的,垃圾收集器未跟踪的chunk memory(块内存)中。
可以参考文件: /Packages/com.unity.entities/Unity.Entities/IComponentData.cs.
本文深入探讨了Unity的Entity Component System (ECS)框架中ComponentData的概念与应用。ComponentData作为实体的数据实例,遵循纯ECS模式,仅定义数据而无方法。文章详细解释了如何通过IComponentData接口构建ComponentData,并提供了修改数据的典型模式。

被折叠的 条评论
为什么被折叠?



