Generic Inventory System 1.2
相对 1.1.1 的更新。这一版让装备不再绑死 Pawn,制作可以分库存、先评估再提交,失败会回滚。按槽名增删也补上了。升级是中等风险:继续调用旧的 Craft 通常还能工作;按 Pawn 查找装备、覆写旧制作虚函数,或依赖「入槽不查槽规则」的代码会断。
新增
- 热键栏和装备槽可以按槽名操作,不必先找到堆叠再搬。 槽集合可用
GIS.Slots从定义创建并放入道具,或按槽名移除指定数量。 - 车辆、容器和其他非 Pawn 也能持有装备。
UGIS_EquipmentSystemComponent改为UActorComponent。初始化先在宿主 Actor 上找库存,没有再回退到 Controller。按UPawnComponent查找的 C++ 会找不到组件。 - 制作可以付到一个库存、产出到另一个,并且中途失败会退回材料。
CanCraftRequest/CraftRequest先评估再提交。需要失败原因或分库存时走这对入口。 - Mac 进入运行时与编辑器平台。 本版本面向 Unreal Engine 5.8。
变更
- Listen Server 上的世界掉落也会播物品信息事件。 权威端写入后立刻走
OnRep_ItemInfo,重置同样会广播。只在客户端听事件的 UI 现在在主机上也能刷新。 - 不合槽规则的写入会被拒绝。
AddItemInternal会调用IsItemFitWithSlot。以前只看占用和堆叠的作弊或工具写入,现在会失败。 - 旧的
Craft/CanCraft只是同一库存的薄封装。 它们不再是制作的真实实现。分库存或读失败原因应走请求 API。 - 货币批量加减要么全成功,要么回滚。 制作提交依赖这两条路径,不会再留下扣了一半的货币。
- 按定义收集材料时不再写错输出数组。
GetItemInfosByDefinition写入调用方提供的数组,制作评估会拿到完整列表。 - 按 StackId 扣非唯一道具时,不会误删另一条同类栈。 只有 StackId 无效才回退到「同类栈」。
- 项目设置与插件配置跟其他 Generic 插件对齐。
UGIS_InventorySystemSettings改名为UGIS_DeveloperSettings,配置文件改为DefaultGenericInventorySystem.ini。
移除
- 装备所有权不再以 Pawn 为中心。
ReceiveOwningPawn/GetOwningPawn和 Pawn 版附着入口停掉,改用 Actor 版本。继续打 Pawn 补丁只会让车辆和容器永远接不上。 - 制作评估不再使用旧的配料缓存和查询结构。
CheckIfEnoughItemIngredients、SelectedItemsCache以及旧查询结构已删除。子类应改到请求评估、提交和回滚钩子。
升级说明
中等风险:源码部分不兼容。C++ 装备查找、自定义装备实例、覆写过的制作组件,以及槽写入调用方需要改。不改时可能编不过,或入槽/制作在运行时被拒绝。
- 把
UGIS_InventorySystemSettings改成UGIS_DeveloperSettings。如果工程复制过BaseGenericInventorySystem.ini,确认现在加载DefaultGenericInventorySystem.ini。 - 装备组件按
UActorComponent查找。自定义装备实例实现ReceiveOwningActor/GetOwningActor。 - 继续调用
Craft/CanCraft通常还能工作。如果覆写了选材、扣材或依赖ProduceCraftingOutput作为默认提交路径,改到请求评估、提交和回滚钩子。 - 依赖「槽定义规则不会在写入时拦截」的旧逻辑,按槽规则检查调用方。