概述
GIS(通用库存系统)提供了一个高度灵活的道具拾取和掉落系统。本文档将详细介绍这些系统的用法以及如何进行功能扩展。
拾取系统
GIS 默认提供三种拾取系统,分别是道具拾取、库存拾取(Loot)和货币拾取。它们均继承自 GIS_PickupComponent,拥有各自的配置和逻辑。通过调用 Pickup 函数即可完成拾取逻辑。
1. 道具拾取
- 用途:用于一次性拾取单个道具,例如掉落地面的武器或盔甲。
- 实现方式:
- 为任意
Actor添加GIS_WorldItemComponent和GIS_ItemPickupComponent,即可构成一个ItemPickupActor。 - 组件说明:
WorldItemComponent:在世界中创建并持有道具实例。ItemPickupComponent:负责将WorldItem引用的道具添加到交互者的库存中。
- 为任意
2. 库存拾取(Loot)
- 用途:用于一次性拾取多种道具,例如游戏中的宝箱或敌人死亡后的遗物。
- 实现方式:
- 为具备
InventorySystem组件的Actor添加GIS_InventoryPickupComponent,即可构成一个InventoryPickupActor。 - 组件说明:
InventorySystemComponent:配置所有可被拾取的道具。ItemPickupComponent:将指定集合中的道具添加到交互者的库存中。
- 为具备
3. 货币拾取
- 实现方式:
- 为任意
Actor添加GIS_CurrencySystemComponent和GIS_CurrencyPickupComponent,即可构成一个CurrencyPickupActor。 - 逻辑说明:
- 拾取时,会移除拾取物
CurrencySystem组件上的所有货币,并将其添加到拾取者的CurrencySystem组件上。
- 拾取时,会移除拾取物
- 为任意
案例:BP_GIS_ItemPickup 蓝图
单纯使用拾取组件不足以满足游戏需求,在实际应用中,拾取系统需要与交互、UI 以及物品视觉效果等内容配合,提供完整功能。GIS 配套项目已预置相关内容,开箱即用。
以配套项目提供的蓝图 BP_GIS_ItemPickup 为例:
- 将该蓝图放置到关卡中,并进行相关配置即可使用。
- 该蓝图包含以下组件:
StaticMesh组件:控制拾取物的视觉效果。Pickup组件:指定道具拾取到玩家的库存集合,并控制拾取成功/失败的声音反馈。SmartObject组件:定义PickupActor的交互入口,拥有交互系统组件的Actor(如玩家或 AI)可搜索并与之交互,触发拾取。WorldItem组件:配置道具定义及其数量,在运行时创建并持有道具实例;拾取成功后,将道具实例添加到玩家指定的库存集合中。
- 该蓝图支持复用,您也可以参考该蓝图创建自定义版本,例如使用特效而非
StaticMesh作为视觉表现。
案例:BP_GIS_ItemPickup 蓝图
单纯使用拾取组件不足以满足游戏需求,在实际应用中,拾取系统需要与交互、UI 以及物品视觉效果等内容配合,提供完整功能。GIS 配套项目已预置相关内容,开箱即用。
以配套项目提供的蓝图 BP_GIS_ItemPickup 为例:
- 将该蓝图放置到关卡中,并进行相关配置即可使用。
- 该蓝图包含以下组件:
StaticMesh组件:控制拾取物的视觉效果。Pickup组件:指定道具拾取到玩家的库存集合,并控制拾取成功/失败的声音反馈。SmartObject组件:定义PickupActor的交互入口,拥有交互系统组件的Actor(如玩家或 AI)可搜索并与之交互,触发拾取。WorldItem组件:配置道具定义及其数量,在运行时创建并持有道具实例;拾取成功后,将道具实例添加到玩家指定的库存集合中。
- 该蓝图支持复用,您也可以参考该蓝图创建自定义版本,例如使用特效而非
StaticMesh作为视觉表现。
提示
你可以在配套项目的演示关卡找到更多的预置蓝图。
掉落系统
GIS 提供两种掉落系统,每种系统根据配置生成不同类型的 PickupActor。
- 所有掉落系统均继承自
GIS_DropperComponent,并可指定掉落生成的PickupActorClass。 - 需要成为拾取物的
Actor必须实现GIS_PickupActorInterface,以便在DropperComponent中被正确选择。
1. 道具掉落
- 实现方式:
- 为已挂载库存组件的敌人、NPC 或场景物件(如罐子)添加
GIS_ItemDropperComponent。 - 在敌人/NPC 死亡或罐子破碎时,调用
DropperComponent上的Drop函数,根据配置规则生成拾取物。
- 为已挂载库存组件的敌人、NPC 或场景物件(如罐子)添加
- 配置选项:
- 从库存的哪个集合中掉落道具。
- 掉落类型:
InventoryPickup(单个Actor,一键拾取所有)或ItemPickup(多个Actor,需分别拾取)。 - 掉落时的随机半径浮动及掉落原点(可以是掉落者位置或其他
Actor位置)。
2. 货币掉落
- 实现方式:
- 为
Actor添加GIS_CurrencyDropperComponent。 - 在合适时机调用
Drop函数,生成对应的货币拾取Actor。
- 为
自定义扩展
- 拾取和掉落系统的核心功能及 API 接口均以组件形式封装。
- 开发者可通过蓝图或 C++ 继承
GIS_DropperComponent和GIS_PickupComponent,查看可继承选项以实现自定义类型的掉落或拾取逻辑。
