嗨各位独立开发者!!(⌐■_■)

让我们说真话:建立一个道具管理系统一般从简单开始,但很快就会变成一个巨大的 spaghetti 代码。您的 UI 脚本会与您的 player 脚本纠缠在一起,保存/加载变成噩梦,它们试图添加一个简单的拖拽功能却破坏了整个战斗逻辑。

我疲惫于不断为每个新项目重写我的库存,于是我花了几个星期建立了 ModularInventory&交互框架,使用严格的、解耦的数据驱动的架构。

以下是它保持清洁的代码库的方式:

  • 事件驱动架构:零硬依赖!UI、逻辑和输入甚至不知道彼此的存在,只通过轻量级 GameEventsListeners 进行沟通。
  • 可脚本化的物体作为事实来源:游戏状态(例如 InventoryData)位于场景之外。这使得保存、加载和调试变得异常轻松。
  • 智能 UI Raycasting:内置 IsPointerOverUIElement 阻塞,防止了您点击库存中的物品而意外发射火球到游戏世界的困扰。
  • 物理准备下的拖拽:实际上拖拽出 UI 时,物品会以准确的速度和方向觉知地射入世界。

加分:由于架构是完全解耦的,我可以使用 同一个 核心库存事件建立一个完整的 CS:GO 风格 Gacha/Roulette 机器

拖拽工作顺利地

如果您因库存架构而苦恼,或仅是想玩转物理下降和 Gacha 机制,我建立了一个 免費 WebGL Demo,您可以直接在浏览器中尝试!

🎮 在您的浏览器中玩 WebGL Demo

我希望听到您怎么样处理自己的库存架构。在您的游戏中,是否喜欢使用单例、事件总线或可脚本化的物体?说出您的观点!