Inventory
概述
All Out 提供了一个玩家库存 API,允许你创建物品、将它们给予玩家,并让玩家在游戏中整理、使用和丢弃物品。
有三个核心概念:
物品定义 (
Item_Definition):某个物品的 是 (名称/图标/堆叠 + 你自己的字段)物品实例 (
Item_Instance):世界中/库存中的实际堆叠库存 (
Inventory):一个包含物品实例的槽位容器
每个玩家都有一个内置库存,位于 player.default_inventory.
持久化
如果你希望玩家库存在跨游戏会话时自动保存,请在编辑器的 Edit -> Game Settings 部分勾选“Auto Save Player Inventory”选项。

库存 API 参考
快速开始(注册 + 给予物品)
在 ao_before_scene_load中只注册一次物品定义,然后创建实例并将它们移动到玩家的库存中。
显示热键栏
要在屏幕上显示标准库存热键栏 UI,请在玩家的 Items.draw_hotbar 方法内部调用 ao_late_update 。如果不这样做,库存系统仍会在后台运行,但玩家看不到它!
Items.draw_hotbar 会为你处理整个热键栏 + 背包切换 UI。它返回一个 Draw_Hotbar_Result ,其中包含 selected_item, selected_item_index, inventory_open和 dropped_item 字段。
检查玩家是否已经拥有某个物品
常见模式是:只有当玩家还没有该物品时才给予它:
你也可以在创建之前检查某种特定物品类型还剩多少空间:
自定义库存
你可以创建不绑定到玩家的库存,例如用于:
箱子 / 存储容器
鱼/怪物队伍
访问物品:
掉落物品
如果你想让玩家把物品丢到世界中(并让其他玩家拾取),请使用掉落物品系统:
生成一个掉落物品
掉落动画 + 吸附到导航网格
处理来自热键栏 UI 的拖放
如果你使用 Items.draw_hotbar,玩家可以将物品从 UI 中拖出以丢弃它。 Dropped_Item.handle_dropped_item 会将其从库存中移除,并生成一个掉落物品实体。
掉落物品会随时间自动消失(并带有警告条)。按住物品上的交互按钮会重置其消失计时器。
你可以使用 dropped->set_exclusive(player).
最后更新于