• Unity DOTS World Entity ArchType Component EntityManager System概述


    最近DOTS终于发布了正式的版本, 我们来分享以下DOTS里面地几个关键概念,方便大家上手学习掌握Unity DOTS开发。

    Unity DOTS 中所有的Entities 都是被放到World世界中。每个Entity在它所在的World里面有唯一不同的ID号来区分。DOTS项目中可以同时有多个World。每个World有一个EntityManager,负责创建,销毁,修改它所在世界里面的entity。每个World,包含了自己的所有的Systems, 并负责System的迭代计算。World中的Entity是一个容器,管理者它对应的Component。Entity中的所拥有的各种Component,被组合成了一种类型叫ArchType, 具有相同组件组合的Entity属于同一种ArchType类型。DOTS 基于ArchType来给Entity中的组件数据来分配内存。分配的时候,首先会分配16K大小的Trunk, 然后每种ArchType会对应一个size,一个Trunk只会分配同一种类型的ArchType,这样可以更高效的做好内存释放与分配。运行的时候,Unity会创建一个默认的世界出来,并把每个system加入到这个默认的世界,如果你想要添加一个system,在运行的时候就加入到默认的World里面,你只要实现IcustomBootstarp接口。如果你不要创建默认的时间,可以加以下的宏来关闭相关:

    #UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP_RUNTIME_WORLD:

    关掉启动时候创建默认运行的World对象;

    #UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP_EDITOR_WORLD

    关掉编辑器模式下默认创建的World对象;

    #UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP

    关闭掉编辑器模式/运行模式下的默认的World的创建;

    综上所述,我们把DOTS 中ECS的几个关键概念与关联做成一个脑图图片,方便大家记忆与理解,如下图所示:

  • 相关阅读:
    简单工厂模式-Simple Factory Pattern
    【Golang】判断某一类型是否实现指定接口的几种方法
    【RabbitMQ】服务启动成功,无法访问localhost:15672(RabbitMQ Management)
    团建游戏------电网
    12种常见的恶意软件类型与防范建议
    C++&QT day3
    JAVA反射
    Linux/Windows中根据端口号关闭进程及关闭Java进程
    第16章_瑞萨MCU零基础入门系列教程之CAN 协议
    Linux下非root用户安装CUDA
  • 原文地址:https://blog.csdn.net/voidinit/article/details/133884693