Fungus Collections是存在于游戏对象上的组件,与角色非常相似。它们为真菌提供了一系列广泛的交互和操作,以便以通用方式对同一类型对象的集合进行操作。旨在允许真菌块执行需要数组的操作。
什么是Collection?
如果您之前编写过脚本或编程,那么您很可能熟悉数组的概念。Collection命令对从我们的基类 Fungus.Collection 继承的任何组件执行操作。允许您添加、删除和迭代整数或浮点数数组或您可能希望实现的任何自定义类型。
Collection类型?
Fungus 附带多种类型,包括整数、浮点数、字符串、游戏对象、变换,您还可以添加自己的类型。本页后面将进一步解释此过程。
Collection在内部是类型化的,但 Fungus 通过对象装箱以通用方式与其交互,以防止每种类型的Collection类型命令激增。Collection的类型会影响能够与其交互的 fungus 变量的类型。
Collection变量
该变量保存对集合本身的引用,允许命令与集合进行交互,从而可以在需要时更改目标Collection。
使用Collection
您需要一个集合类型,存在于某个游戏对象上,可能是一个新的空集合,命名以明确其用途。然后将组件添加到您需要的集合类型的对象,例如 IntCollection 或 FloatCollection 等。您可以直接在组件上配置起始值。
对Collection采取直接操作与 fungus 中的任何其他命令类似,但您很可能希望对Collection中的所有项目采取行动。为此,您需要迭代它们,ForEach 命令是专门为此目的而制作的,但是使用 while 或基于范围的循环也很容易。如果索引是您希望反向迭代控制器的驱动因素,则这些可能是首选。
Collection支持
当编写需要同时使用 FungusVariables 和 FungusCollections 的命令时,您需要实现 ICollectionCompatible,以便 VaraibleEditor 能够协助在检查器中仅选择兼容的变量类型。有关如何执行此操作的示例,请查看 CollectionBaseVarCommand。
添加新的Collection类型。
非常简单,我们从 Fungus.GenericCollection 继承了您的特定类型。建议查看 FloatCollection 以供参考。大多数情况下可能就是这么简单。如果您需要重写专业化中 GenericCollection 中的任何方法,以更好地支持特定类型的需求,例如排序,您可以这样做。