跳转至

GFInventoryItemDefinition

API Reference / Domain / 类索引

  • 路径:addons/gf/extensions/domain/inventory/gf_inventory_item_definition.gd
  • 模块:Domain
  • 继承:Resource
  • API:public
  • 类别:资源定义 (resource_definition)
  • 首次版本:3.17.0

通用库存物品定义。 只描述库存系统需要理解的堆叠、分类和实例数据匹配规则, 不规定品质、装备、货币、掉落等项目业务语义。

成员概览

类型 名称 签名
属性 item_id var item_id: StringName = &""
属性 display_name var display_name: String = ""
属性 description var description: String = ""
属性 icon var icon: Texture2D = null
属性 max_stack_amount var max_stack_amount: int:
属性 max_stack_count var max_stack_count: int:
属性 categories var categories: Array[StringName] = []
属性 default_instance_data var default_instance_data: Dictionary = {}
属性 stack_key_fields var stack_key_fields: PackedStringArray = PackedStringArray()
属性 metadata var metadata: Dictionary = {}
属性 compatibility_checker var compatibility_checker: Callable = Callable()
方法 get_item_id func get_item_id() -> StringName:
方法 get_display_name func get_display_name() -> String:
方法 has_category func has_category(category: StringName) -> bool:
方法 matches_categories func matches_categories(required_categories: Array[StringName]) -> bool:
方法 normalize_instance_data func normalize_instance_data(instance_data: Dictionary = {}) -> Dictionary:
方法 are_instance_data_compatible func are_instance_data_compatible(left: Dictionary = {}, right: Dictionary = {}) -> bool:
方法 to_dict func to_dict() -> Dictionary:
方法 apply_dict func apply_dict(data: Dictionary) -> void:
方法 from_dict static func from_dict(data: Dictionary) -> GFInventoryItemDefinition:

属性

item_id

  • API:public
var item_id: StringName = &""

物品稳定标识。

display_name

  • API:public
var display_name: String = ""

显示名称,供项目 UI 或编辑器工具使用。

description

  • API:public
var description: String = ""

描述文本,供项目 UI 或编辑器工具使用。

icon

  • API:public
var icon: Texture2D = null

可选图标资源。

max_stack_amount

  • API:public
var max_stack_amount: int:

单个堆叠最多容纳的数量。

max_stack_count

  • API:public
var max_stack_count: int:

同一物品最多占用的堆叠数量。小于等于 0 表示不限制。

categories

  • API:public
var categories: Array[StringName] = []

分类标签。框架只保存和匹配,不解释具体含义。

结构:

  • categories: Array[StringName],用于项目自定义筛选的分类标签列表。

default_instance_data

  • API:public
var default_instance_data: Dictionary = {}

默认实例数据。空堆叠或空输入会按这些默认值参与兼容性比较。

结构:

  • default_instance_data: Dictionary,物品实例数据默认值;用于堆叠兼容性比较和序列化。

stack_key_fields

  • API:public
var stack_key_fields: PackedStringArray = PackedStringArray()

用于判断堆叠兼容性的实例数据字段。为空时比较完整实例数据。

metadata

  • API:public
var metadata: Dictionary = {}

项目自定义元数据。

结构:

  • metadata: Dictionary,项目自定义物品定义元数据;GF 不读取或改写其中字段。

compatibility_checker

  • API:public
var compatibility_checker: Callable = Callable()

可选堆叠兼容性回调。签名为 Callable(left: Dictionary, right: Dictionary, definition: GFInventoryItemDefinition) -> bool。

方法

get_item_id

  • API:public
func get_item_id() -> StringName:

获取稳定物品标识。

返回:物品标识。

get_display_name

  • API:public
func get_display_name() -> String:

获取可显示名称。

返回:显示名称;为空时回退到 item_id 或资源文件名。

has_category

  • API:public
func has_category(category: StringName) -> bool:

检查是否包含分类标签。

参数:

名称 说明
category 分类标签。

返回:包含时返回 true。

matches_categories

  • API:public
func matches_categories(required_categories: Array[StringName]) -> bool:

检查是否满足全部分类标签。

参数:

名称 说明
required_categories 需要匹配的分类标签。

返回:全部满足时返回 true。

结构:

  • required_categories: Array[StringName],必须全部存在于 categories 中的分类标签列表。

normalize_instance_data

  • API:public
func normalize_instance_data(instance_data: Dictionary = {}) -> Dictionary:

规范化实例数据。与默认实例数据等价时返回空字典。

参数:

名称 说明
instance_data 实例数据。

返回:规范化后的实例数据副本。

结构:

  • instance_data: Dictionary,项目自定义物品实例数据。
  • return: Dictionary,规范化后的物品实例数据副本;等价于默认实例数据时为空字典。

are_instance_data_compatible

  • API:public
func are_instance_data_compatible(left: Dictionary = {}, right: Dictionary = {}) -> bool:

判断两份实例数据是否可以合并到同一堆叠。

参数:

名称 说明
left 左侧实例数据。
right 右侧实例数据。

返回:可合并返回 true。

结构:

  • left: Dictionary,左侧物品实例数据。
  • right: Dictionary,右侧物品实例数据。

to_dict

  • API:public
func to_dict() -> Dictionary:

转换为字典。

返回:可序列化字典。

结构:

  • return: Dictionary,包含 item_id、display_name、description、max_stack_amount、max_stack_count、categories、default_instance_data、stack_key_fields 与 metadata。

apply_dict

  • API:public
func apply_dict(data: Dictionary) -> void:

应用字典数据。

参数:

名称 说明
data 字典数据。

结构:

  • data: Dictionary,可包含 item_id、display_name、description、max_stack_amount、max_stack_count、categories、default_instance_data、stack_key_fields 与 metadata。

from_dict

  • API:public
static func from_dict(data: Dictionary) -> GFInventoryItemDefinition:

从字典创建物品定义。

参数:

名称 说明
data 字典数据。

返回:物品定义。

结构:

  • data: Dictionary,可包含 item_id、display_name、description、max_stack_amount、max_stack_count、categories、default_instance_data、stack_key_fields 与 metadata。