Flatbuffers Schema:工会的矢量

时间:2017-04-27 20:15:57

标签: schema flatbuffers

我在尝试工会的载体时遇到了这个错误

error: Vectors of unions are not yet supported in all the specified 
programming languages.

显然,flatbuffers不支持工会的向量。所以我需要另一种数据类型来解决我的问题。这是我的情况:

使用模型实体组件系统(ECS),我有3个实体和3个组件,这里是结构

EntityA            EntityB            EntityC
    component1        component1        component3
    component3        component2

如果我可以使用联盟的向量,则架构看起来像这样

union Components { Component1, Component2, Component3 }

table Update {
    component:[Components];
}

组件[N]是表格。实际上我有一个没有工会载体的解决方案

table Update {
    component1:[Component1];
    component2:[Component2];
    component3:[Component3];
}

但是当组件列表增加时,它变得无法管理。

对不起,我正在使用ECS,这实际上是用于游戏开发。但这不是游戏,所以我认为这是提出这类问题的正确场所。

如果没有工会的矢量并且优于上述解决方案,如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

是的,工会的向量是一个新功能(仅在几周前添加)到目前为止仅在C ++中可用。

传统的方法是创建一个table Component { c:Components; }来包装union值,然后从中创建一个[Component]

如果组件数量很高,使用多个向量可能会变得效率低下。