下载 App

如何构建仓库系统:从逻辑构建到细节优化

2025/08/06262 浏览案例分享

一、功能介绍

本仓库系统实现多物品选择一次性存储功能,包括“开启存仓 - 识别背包物品 - 选中物品存仓 - 关闭存仓清理界面” 完整流程,核心围绕按钮交互、物品遍历、状态控制、UI 联动展开,解决背包物品非连续摆放遍历,保障存仓操作精准。
具体效果演示见视频:

二、核心模块拆解

(一)模式切换:按钮控制存仓逻辑(图 1)

触发条件:点击 "仓库开关" 按钮,进入流程分支。
逻辑设计:
通过判断 "是否开启背包存储模式" 面板显隐状态(false 隐藏 / true 显示 ),决定执行的自定义事件:
  • 面板隐藏(false):发送 准备仓库存放模式 事件,启动存仓预处理(如识别背包有物品格子)。
  • 面板显示(true):发送 往仓库存放物品 事件,执行实际存仓操作。
TapTap
图1-按钮控制存仓逻辑(界面编辑器)

(二)准备阶段:识别有物品的格子

注意:背包物品非连续摆放(如第 3 格空、第 4 格有物品 ),直接用数组遍历会遗漏后续物品。解决方案:数组转集合
  • 遍历背包:循环检查目标物品栏(如编号 4 的物品栏 )的 32 个格子。
  • 筛选有效格子:若格子 "装载物品 ≠ 空值",将格子索引存入集合(集合自动处理 "非连续",仅保留有效数据 )。
  • 事件传递:一定要用数组,因为服务器和客户端之间无法传递集合。
Tips:集合 vs 数组
数组是顺序容器,空行会打断遍历,导致漏判;
集合是无序容器,自动去重、存储有效索引,适配 "物品非连续摆放" 场景,保障遍历完整性。
TapTap
图2-遍历物品栏中有物品的格子(服务器)

(三)界面反馈:动态显示选中区域(图 3)

逻辑:数据(集合 )→ UI(背景面板 )精准映射。实现步骤:
  • 获取 UI 元素:收集所有 "背包物品被选中背景" 面板,存入数组。
  • 构建编号集合:遍历准备阶段的 "有效格子索引",存入新集合。
  • 双循环匹配:
TapTap
图3-将数组转换成集合,打开有物品的格子的相关ui(客户端)

(四)标记物品是否被选中(图 4、图 5)

交互设计:点击物品时,切换 "选中背景""选中标记" 面板显隐;
状态持久化:通过物品保存值记录 "是否被选中"(自定义索引如 "是否被选中" ),即使界面刷新,状态也能保留;
事件联动:点击时发送 设置物品被选中状态 事件,更新物品选中标记(1 选中 / 0 未选中 )。
TapTap
图4
TapTap
图5

(五)存仓执行:物品迁移与状态重置(图 6)核心操作:

  • 筛选选中物品:遍历背包(如编号 4 的物品栏 ),通过 "保存值 = 1" 识别选中物品;
  • 迁移物品:将选中物品移动到仓库物品栏(如编号 5 的物品栏 );
  • 重置状态:清空物品 "选中标记"(保存值设为 0 ),恢复背包物品可移动状态(保障存仓后交互正常 );
  • 收尾:发送 关闭仓库存放模式 事件,清理界面。
细节可再优化:先判断物品状态再移动,避免误操作空格子;恢复物品可移动性,提升存仓后交互连贯性。
TapTap
图6

(六)模式关闭:界面状态清理(图 7)

操作目的:隐藏 "选中背景""选中标记" 面板,重置界面状态,为下次操作做准备。
实现方式:遍历 "背包物品被选中背景""背包物品被选中标记" 面板数组,统一设置 显示 = false,保障界面干净无残留。
TapTap
图7

最后,重新梳理一遍逻辑

开启流程:按钮点击 → 面板显隐判断 → 触发预处理 / 存仓事件;
准备阶段:遍历背包 → 集合筛选有效格子 → 传递事件;
交互与存仓:UI 动态反馈 → 物品选中标记 → 物品迁移与状态重置;
收尾:关闭模式 → 清理界面。
如果有更高效率的仓库存储系统写法,欢迎大佬来交流[表情_大笑]刚研究星火不久
猜你想搜
星火编辑器 仓库系统构建
00:09
背包自动整理:一看就会,超简单!截图
背包自动整理:一看就会,超简单!
背包一键整理,星火编辑器触发几行就能轻松做出背包一键整理功能,纯小白也能学会~ 先看视频效果: 一、核心目标 点 “整理背包” 按钮,让背包里的物品自动排序(比如好东西放前面、同类集中),把零散格子空出来,找东西更方便! 二、步骤拆解(对应截图逻辑) 1. 启动整理流程(事件触发) 选 “游戏 - 触发自定义事件”,绑定 “背包整理按钮点击” 。意思是:点按钮时,启动整理功能。 2. 提取背包物品
5 赞
星火编辑器-新手教程-关于多游戏模式的配置和触发的获取截图
星火编辑器-新手教程-关于多游戏模式的配置和触发的获取
HELLO 大家好,我是阿木木牧。最近第一版的内部小范围(几人)第一个图的测试已经结束了。 整体游戏以装备数值的崩坏而告终~ (虽然大家都很欢快。。。) 现在准备开始开发下个阶段的内容啦,就是将游戏模式拆分出来。分成单人模式,多人组队模式(合作PVE),多人匹配模式(对抗模式)。那么,怎么配置呢?说来也很简单哈~ 1,在游戏编辑器中,数据编辑器,找到地图设置。 2,编辑地图设置。比如我希望最大数量
14 赞
3 回复
「自制卡牌游戏DIY」战斗抽卡系统(1)截图
「自制卡牌游戏DIY」战斗抽卡系统(1)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 上一期我们完成了游戏的核心功能——战斗抽卡系统的设计,并将主要设计梗概用思维导图的形式清楚呈现。今天我们要着手开始用触发器编写逻辑,实现这个游戏核心玩法系统。本期车速较快,请站稳扶好! 首先我们先做好前置准备,确保已经有了“标准卡牌”类以及足以存储卡牌所需信息的各个成员变量(P2) 同样的,确认玩家信息类里面已经有了这三个“标准卡牌”数组
1 赞
无须申请,星火编辑器现已公测开放下载截图
无须申请,星火编辑器现已公测开放下载
—————————————————— 各位关注星火编辑器的小伙伴: 感谢大家一直以来对编辑器支持! 破晓已去,曙光降临! 星火编辑器现已开启公测! · 关于下载和资格申请 现已无需申请,请去下面的官方首页直接下载! 缘起测试是星火编辑器自诞生以来第一次对外测试! 从2022年八月开始到十一月,历时三个月。 缘起之后缘聚测试,历时又七个月! 缘聚之后,破晓降临,历时又十二个月! 曾经微弱的星火现已渐
官方
331 赞
375 回复
「自制卡牌游戏DIY」战斗抽卡系统(2)截图
「自制卡牌游戏DIY」战斗抽卡系统(2)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 在上期内容中,我们从卡牌状态的切换打开思路,将从卡池中刷新场上卡牌逻辑用触发器一步步实现,并通过洗牌的方法确保玩家从入场卡池中刷出的卡牌具有随机性。但在此之后系统还需要将抽取的卡牌替换为新卡,并为抽到的法术卡添加法术,方可将刷出卡牌的信息完备地打包给客户端以呈现给玩家,而这正是今天要做的。话不多说,来吧。 接着上期,在对卡池中未抽取的卡牌进行
2 赞
「自制卡牌游戏DIY」战斗抽卡系统(3)截图
「自制卡牌游戏DIY」战斗抽卡系统(3)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 我正在用『星火编辑器』将一张游戏卡牌变成一款卡牌游戏。 在上一期,我们成功把玩家刷新刷出卡的信息经服务端处理后,转化为客户端中可用于显示给玩家的面板控件。这期让我们继续完善战斗抽卡系统及相关功能的触发器逻辑。 还是在触发器客户端,我们已经完成了修改牌面UI的方法,接下来要做两件事:一个是将场上每张刷出来的卡的UI进行生成和保存,另一个是要为
2 赞
「自制卡牌游戏DIY」战斗出卡逻辑(1)截图
「自制卡牌游戏DIY」战斗出卡逻辑(1)
#星火编辑器 #星火编辑器入门 #星火编辑器案例 我正在用『星火编辑器』将一张卡牌变成一款卡牌游戏。 在前几期中,我们设计并完善了战斗抽卡系统,使得游戏能以符合玩家体验的方式,在战斗阶段中为玩家刷出呈现各具效果的卡牌——我们正在一步步为这款卡牌游戏搭建肉体、铸造灵魂。然而,玩家选择及打出卡牌的逻辑同样重要,今天我们就要对这一部分的功能搭建发起冲锋。 在前面我们已经在客户端逻辑中为场上的卡
6 赞
「自制卡牌游戏DIY」游戏阶段管理(2)截图
「自制卡牌游戏DIY」游戏阶段管理(2)
#星火编辑器 #星火编辑器入门 #星火编辑器小功能分享教程 我正在尝试使用『星火编辑器』制作一款卡牌游戏。 今天我们接着上一期继续进行游戏阶段相关的触发器编写。当完成了计时器当前阶段读秒的方法和切换阶段的方法后,要用一个触发器处理阶段结束时程序需要做的事。当阶段结束时,触发器除了要执行服务端的方法外,也要向客户端发送不同的事件指令去让客户端执行和玩家相关的客户端触发器。那么话不多说,直接开干。 在
「自制卡牌游戏DIY」游戏主界面设计截图
「自制卡牌游戏DIY」游戏主界面设计
#星火编辑器 #星火编辑器入门 #卡牌游戏 #星火编辑器小功能分享教程 我正在尝试用『星火编辑器』创作一款卡牌游戏。 在前面几期,我们完成了卡牌和卡牌包功能的制作,并在实机测试中看到了想要的效果。而对于一款卡牌游戏,主界面的设计尤为重要,它将直接影响玩家的观感。星火官方给出了游戏UI的评价标准(P2):左图那样杂乱的UI只能是D档,右图那样将UI合理摆正则能达到C档。那么A档的UI是怎么样的呢?
2 赞