ECS框架文档翻译四 ComponentData

本文深入探讨了Unity的Entity Component System (ECS)框架中ComponentData的概念与应用。ComponentData作为实体的数据实例,遵循纯ECS模式,仅定义数据而无方法。文章详细解释了如何通过IComponentData接口构建ComponentData,并提供了修改数据的典型模式。

以下文档均来源于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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值