ECS Entitas源码分析(三)___Component

Component介绍

Component是ECS框架中重要组成部分之一的组件。在Entitas中它是一个接口类,我们需要实现它的接口来保存我们需要的数据。同时Entitas还给我们提供各种特殊的标签属性,通过生成代码为我们生成具有各种特殊功能的组件。例如:[Attributes]确保最多存在一个具有此组件的实体,类似单例;[Event]类似事件组件,当这个组件改变了可以回调到对应的注册方法。还有很多其它实用的属性,我们可以在这里查看

一、IComponent接口

IComponent是一个接口,Entitas中所有我们自定义的Component都必须继承它。

public interface IComponent {

}
二、ComponentsLookup

正如它的命名,这个类就是用来定义和查找Context中Component的相关信息。这个类是代码生成器自动生成的,无须我们手动编写。它主要为我们自定义的Component定义了一个int类型的索引。在其他地方我们都是通过这个索引来关联对应的Componet,例如:作为Entity中保存的组件数组的下标;Matcher中筛选数组的下标等。这样,所有引用Component的地方都可以使用数组下标访问,提高效率。

public static class GameComponentsLookup {
    //定义组件索引
    public const int Asset = 0;
    public const int Destroy = 1;
    public const int Log = 2;
    public const int Position = 3;
    
    //组件的总个数,初始化Entity是用到
    public const int TotalComponents = 4;
    
    public static readonly string[] componentNames = {
        "Asset",       
        "Destroy",    
        "Log",
        "Position"
    };
    //所有组件类型的数组
    public static readonly System.Type[] componentTypes = {
        typeof(AssetComponent),
        typeof(DestroyComponent),
        typeof(LogComponent),
        typeof(PositionComponent)
    };
}
三、总结

Component是Entitas中的数据类,它通过组合添加到Entity上来实现各种各样不同含义的对象。Entitas为我们提供了各种特殊的属性标签,通过生成代码,表现出不同特征的组件,例如:单例,事件,键值对等。同时还会自动为我们所有的Component生成对应的索引,方便我们在其他地方方便快速的访问。

<上一篇>ECS Entitas源码分析(二)__Context
<下一篇>ECS Entitas源码分析(四)__Entity

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值