浅尝Unity ECS的笔记 2020 Create an Entity(一)

本文介绍了Unity的ECS框架,强调其相比OOP的优势,并通过实例展示了如何创建和管理Entity。通过导入Entities和Hybrid Renderer组件,作者创建了一个在游戏开始时生成实体的脚本,探讨了Entity与GameObject的区别,以及如何初始化Entity的Component数据。文章以一个无法直接选中和修改的蓝色方块为例,预告了后续将研究Conversion Workflow来优化这一过程。
摘要由CSDN通过智能技术生成

由于Unity ECS仍然是个preview package,本文谈到的内容可能和最新版本有所不同。

有用的链接

1.

相信看到这篇文章的人肯定已经知道ECS在很多方面比OOP有很多优势,Unity也一直在研究并尝试实现ECS框架,未来的某一天ECS也许会非常流行。尽管现在的Unity的ECS还没有非常完善,但是早点熟悉一下肯定不是坏事。😄

ECS的全称Entity Component System,用另一种说法也就是由 物体 数据 行为逻辑 组成。任何都会被一个管理员(EntityManager)进行统一管理,而每一个游戏世界(world)里,只有一个独一无二的管理员。

2.

道理我都懂,但真的写起来还是有点儿迷糊的。所以还是亲手试试,加深理解。

首先在Unity里导入Entities 组件和Hybrid Renderer组件(如果搜索不到,就要在Advanced里选择preview packages)

导入Entities pakage
然后简单地写一个游戏开始时就会创建实体的script。

using Unity.Entities;

public class Spawner : MonoBehaviour
{
   
    // Start is called before the first frame update
    void Start()
    {
   
        MakeEntity();
    }

    private void MakeEntity()
    {
   
        EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
        entityManager.CreateEntity()
Unity ECSEntity Component System)是Unity引擎的一种编程范式,它是一种数据驱动的编程模型,它将游戏对象(Entity)分解为数据和行为两个部分,其中数据由组件(Component)来表示,行为则由系统(System)来实现。相对于传统的面向对象编程模型,ECS提供了更高效、更灵活的编程方式,可以有效地提高游戏的性能和扩展性。 下面是我学习Unity ECS时的笔记: ## Entity EntityECS中最基本的概念,它表示游戏对象。每个Entity由一个唯一的ID来标识,可以通过EntityManager来创建、销毁、查询和管理Entity。 ## Component Component是Entity的数据部分,用来描述Entity的属性和状态。每个Component包含一些数据成员和一些方法,用来操作这些数据成员。Component是以结构体(struct)的形式定义的,通常只包含数据成员,不包含方法。 ## System System是Entity的行为部分,用来实现游戏逻辑和操作Component。System可以访问和操作EntityManager和Component,但不能直接访问Entity。每个System包含一个或多个Component,表示它所处理的数据类型。System是以类(class)的形式定义的,通常包含一个Update方法,用来实现游戏逻辑。 ## Job Job是一种轻量级的线程,用于并行执行System中的任务。Job可以访问和操作Component,但不能直接访问EntityEntityManager。Job通常是以结构体(struct)的形式定义的,不包含方法。 ## Archetype Archetype是Entity的集合,包含一组具有相同Component类型的Entity。Archetype可以用来优化数据的访问和处理,可以在不同的System之间共享。 ## Chunk Chunk是Archetype中的数据块,包含一组连续的Entity和它们的Component数据。Chunk可以用来优化内存的分配和访问,可以在Job中进行并行处理。 ## Buffer Buffer是一种Component类型,用来存储可变长度的数据,例如数组或列表。Buffer可以在System和Job中进行修改和访问。 以上是我学习Unity ECS时的笔记,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值