zoukankan      html  css  js  c++  java
  • Unity-ECS-实践

    Archetypes原型 (它的存在使得遍历组件的命中率非常高)

    • Archetype是一个容器,Unity规定每个ArcheType的大小16kb,不够就再开。始终保存内存的连续性

    World 世界

    • World包含EntityManager、ComponentSystems、Achetypes(原型)
    • ECS默认提供一个世界。
    • 世界之间不具备互通性。

    简单从MonoBehavior创建Entity

    // Create entity prefab from the gameobject hierarchy once
    var setting = GameObjectConversionSettings.FromWorld(World.DefaultGameObjectInjectionWorld, null);
    var prefabEntity = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefab, setting);
    var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
    
    // Efficiently instantiate a bunch of entities from the already converted entity prefab
    var instance = entityManager.Instantiate(prefabEntity);
    //SetComponentData
    entityManager.SetComponentData(instance,new Translation{Value =  Vector3.zero});
    

    数据存储相关

    Chunk的概念
    Chunk是Unity ECS中特有的一个数据结构,在ECS部分代码中有大量使用,通常是指用来存放Component信息的与ArchetypeChunk,此外还有更一般的Chunk通过ChunkAllocator进行开辟,可以存放ArcheType中的各类型信息,大小和存储结构都与ArchetypeChunk不同,此处的Chunk特指存放ArcheType中Component信息的ArchetypeChunk。Chunk有以下几个特点:

    EntityManager会将Component数据存放在固定的16kb大小的Chunk中(可以在Chunk定义中找到指定大小kChunkSize)
    每个Chunk结构包含了这个区块中内容的相关信息
    每个EntityArchetype都包括了一个Chunk的独特集合
    一个chunk只能存在于一个archetype中
    一个ArchetypeChunk结构是一个到具体Chunk的指针
    每一个Chunk中包含的内容有:

    一个指向其所归属的Archetype的指针
    一个可以容纳多少个该Archetype类型Component数据的容量(Capacity)以及当前存放个数(Count),容量由Chunk的总大小除以单个Archetype所有Component大小之和得到
    一个关于SharedComponentData值的索引(indices)数组,每个Chunk对于每种SharedComponentData类型只会存放一份具体值,所有在该Chunk上的Entity数据共享该值。
    一个ChangeVersion表明该Chunk上每一种Component上一次被修改的时机
    Entity中各ComponentData的具体数据,这边相同的类型的ComponentData会被放在一起,一种类型结束才是下一种
    Chunk中正式ComponentData数据内容从Buffer字段开始,ComponentData的具体存储排列如图

  • 相关阅读:
    Promise小结 ES6异步编程
    XLNet模型
    BERT模型
    Transformer模型
    注意力机制(Attention Mechanism)
    序列到序列模型(seq2seq)
    【Pandas-附件2】查询手册
    【Pandas-附件1】读取excle和csv具体函数
    【pandas-21】实践-同比和环比指标
    【pandas-20】实践(泰坦尼克沉船事件)-特征处理
  • 原文地址:https://www.cnblogs.com/Jaysonhome/p/12890384.html
Copyright © 2011-2022 走看看