Unity Entity Component System --- General Purpose Components 组件

Unity中的ComponentData(ECS中的component)对象,是个仅存储一个Entity数据的结构体。ComponentData不能包含方法,除了访问数据的函数。所有的游戏逻辑都应该在System中实现。这相当于是老的Unity中的Component,只是只包含变量。

ECS提供了 IComponentData,可以实现该接口。

IComponentData

传统的Unity components(包括MonoBehaviour)是面向对象的,包含了数据和方法。IComponentData是纯粹的ECS类型的组件,只有数据,没有方法。同时它是结构体,因此默认赋值是通过值拷贝,而不是引用。修改它的数据通常要像下面这样:

var transform = group.transform[index]; // 读取数据
transform.heading = playerInput.move; // 修改数据
transform.position += deltaTime * playerInput.move * settings.playerMoveSpeed;
group.transform[index] = transform; // 将数据写回去

ponentData结构体不能持有托管对象的引用,因为所有的ComponentData都是创建在无垃圾回收的chunk memory上(不需要)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值