装备系统

在通用库存系统(GIS)中,装备布局通过道具槽集合进行设计。装备系统的核心功能是处理将不同道具放入或移除不同槽位时所触发的实际逻辑。

通用库存系统.封面
罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2025年6月24日更新时间: 2026年9月15日

目录

概述

在通用库存系统(GIS)中,装备布局通过道具槽集合进行设计。装备系统的核心功能是处理将不同道具放入或移除不同槽位时所触发的实际逻辑

装备系统组件

  • 组件名称GIS_EquipmentSystemComponent
  • 使用方式
    • 将该组件添加到 Pawn 上,并指定 TargetCollectionTag 即可启用装备系统。
    • 该组件将与库存系统联动,管理目标集合内的装备相关逻辑。
装备系统.组件

初始化

  • 初始化顺序
    • 通常在库存系统初始化完成后,再初始化装备系统,以确保库存数据已准备就绪。

Loading Blueprint

Initializing BlueprintUE renderer...

关系表

当该系统初始化时,会监听库存系统组件中的目标集合内道具变动,动态地获取对应槽上的道具,根据道具上的数据生成对应的装备实例

装备系统.关系
因此,当你对目标集合上的道具进行增删改查时,本质上是在对装备进行增删改查。

创建装备定义

  • 核心概念
    • 定义一件装备本质上是通过创建一个包含 EquippableSettings 数据片段的道具定义。
    • 在装备系统的默认实现中,只有具备 EquippableSettings 的道具在目标集合中发生变动时,才会被装备系统处理。
装备系统.创建装备

装备设置

  • 关键配置项
    • InstanceType:决定装备实例的类型,装备实例负责处理“已装备”道具的具体游戏逻辑。只有实现了 GIS_EquipmentInterface 接口的类才能被选中。
    • AutoActivate:装备实例生成后是否自动激活。例如,玩家可能同时装备多个武器,但只有一个处于激活状态(如手持),其他武器为非激活状态(如背在背上)。
    • ActorBased:装备实例类型可以基于 UObject,也可以是 Actor
    • ActorsToSpawn:若装备实例类型为 UObject,可以关联一组 Actor,在装备实例生成时一起生成。例如,一件武器装备可同时在右手生成剑,左手生成盾牌。
  • 更多细节
    • 有关装备实例的详细内容,请参阅:装备实例

拓展字段

你可以子类化UGIS_ItemFragment_Equippable为装备设置添加新的字段。

你也可以针对装备的不同方面,直接通过蓝图/C++新建不同的道具数据片段,如:

装备系统.装备Fragment
装备系统.装备Fragment配置

装备组

在游戏中,通常会有在不同的装备之间进行切换的需求。

比如艾尔登法环:

  • 可以在右手武器中来回切换;也可以在左手武器中来回切换。
  • 可以在法术之间来回切换。
  • 可以在要使用的道具之间来回切换。

设计装备组

你只需要在道具槽集合中设计你道具槽的时候,指定好明确的Tag层级,即可实现道具组。

比如你有Slots.Weapon.1和Slots.Weapon.2两个槽,那么你可以以“Slots.Weapon”构建一个武器组,

这样你就可以通过API在Weapon.1和Weapon.2之间来回切换。

展示装备组

GIS提供WB_GIS_EquipmentGroup控件,你可以配置它追踪哪个组,它会根据配置自动构建布局,并监听装备系统组件上的装备组变化,对UI进行更新。

你还可以控制它是以列表形式显示,还是仅展示激活的装备(单个Entry)。

API

装备系统主要有如下API。

Loading Blueprint

Initializing BlueprintUE renderer...

在蓝图的ContextMenu可通过GIS|EquipmentSystem过滤出所有装备系统的API。