我在尝试工会的载体时遇到了这个错误
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,这实际上是用于游戏开发。但这不是游戏,所以我认为这是提出这类问题的正确场所。
如果没有工会的矢量并且优于上述解决方案,如何解决这个问题?
答案 0 :(得分:4)
是的,工会的向量是一个新功能(仅在几周前添加)到目前为止仅在C ++中可用。
传统的方法是创建一个table Component { c:Components; }
来包装union值,然后从中创建一个[Component]
。
如果组件数量很高,使用多个向量可能会变得效率低下。