ECS框架文档翻译四 ComponentData

以下文档均来源于ECS官网:

https://docs.unity3d.com/Packages/[email protected]/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中的ECS编程)