跳转到正文

GIS1.2 发布日志

UE5 通用库存系统 1.2发布日志

罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2026年7月21日更新时间: 2026年10月14日

目录

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++ 装备查找、自定义装备实例、覆写过的制作组件,以及槽写入调用方需要改。不改时可能编不过,或入槽/制作在运行时被拒绝。

  1. 把 UGIS_InventorySystemSettings 改成 UGIS_DeveloperSettings。如果工程复制过 BaseGenericInventorySystem.ini,确认现在加载 DefaultGenericInventorySystem.ini。
  2. 装备组件按 UActorComponent 查找。自定义装备实例实现 ReceiveOwningActor / GetOwningActor。
  3. 继续调用 Craft / CanCraft 通常还能工作。如果覆写了选材、扣材或依赖 ProduceCraftingOutput 作为默认提交路径,改到请求评估、提交和回滚钩子。
  4. 依赖「槽定义规则不会在写入时拦截」的旧逻辑,按槽规则检查调用方。