[Unity ECS]了解您的可绑定类型

为了使事情进入Job或ECS存储空间,您希望它们位于IComponentData 。 如果您将某些无法放音的东西放到Unity中并尝试与ECS / Jobs一起使用,Unity将产生运行时错误。

Blittable类型-维基百科
可Blittable类型是Microsoft .NET框架中的数据类型,它们在内存中的呈现方式都相同…… en.wikipedia.org

可能不是很明显的非blittable类型包括bool和blittable类型数组。 数组是一个指针,而无论出于何种原因, bool都无法变位。 Enum还可以! (它是一个int

这里说的是blittable类型的数组是blittable的,但是我已经尝试过,并且IComponentData不接受我的int[] ,这是因为int[]是指向blittable类型的数组的指针,并且不是blittable的。

可广播和不可广播类型
在非托管环境中,某些托管数据类型需要不同的表示形式。 这些不可复制的数据类型… docs.microsoft.com

要替代bool ,请使用using Unity.Mathematics ,然后您将可以访问bool1 bool2 bool3 …以及有用的优化选择,例如half half2 …,并且对于math.也很重要math. 功能。 bool1half可直接转换为boolhalf

string不是可blittable的,但是如果您想保留字符串只是为了比较相等性(例如作为标记),则可以使用GetHashCode将其转换为int ,从而可实现blittable。

为了保持真实的字符串,也许您可​​以将每个字符用作固定大小的ascii int数字? 我不知道。 但是char是不可变的。 保持每个角色为一个实体?

PS。 他们正在删除bool1 ,并使bool变为可蓝化! 不久!