跳到主要内容

把合成规则接上输入、画面与反馈

现在规则能计算结果,下一步是让它显示出来并接收操作。最可靠的起点是:视图总能根据当前状态重建正确画面。 特效只是额外反馈。

棋盘视图需要知道什么​

每个格子有稳定编号,布局负责把编号映射成屏幕位置。物品视图绑定格子与等级,用等级配置选择图片。不要用物体名称、颜色或当前位置作为规则数据的唯一来源。

对象输入责任
BoardView棋盘快照创建、更新和移除各格视图
ItemView格子编号、等级、图片显示物品、发出交互意图
DragSession源格、指针、抓取偏移跟随手指、命中目标、取消恢复
反馈逻辑已提交的结果动画、音效、分数变化

这是一种职责划分,不要求给每行职责建立一个抽象类。小工程可以合并文件,但应保留清楚的数据流。

完整的提交顺序​

提交入口负责检查当前是否允许操作,避免暂停、加载或正在处理反馈时进入第二次操作。规则层仍独立检查合法性,不能因为 UI 做了限制就省略。

为什么先刷新基础状态​

如果“升级图片”只发生在动画结束回调中,动画中断就可能让画面保留旧物品。先把视图绑定到新状态,再在视觉层叠加缩放、光效或临时飞行物,恢复起来更简单。

第一次实现可以直接刷新整个 16 格棋盘。数量小、成本可控,且更容易保证正确。确认性能确实需要后,再只更新受影响格子,不必一开始就写复杂差量同步。

交互锁必须有释放路径​

如果第一版动画期间锁定整个棋盘,那么成功、失败、取消、对象销毁和场景退出都应能释放锁。不能只在“正常播放完毕”时解锁。

进入后台时可选择立即结束表现、恢复静态正确画面并取消拖拽。返回后根据当前业务状态重绘,不试图精确续播所有视觉细节。

UI 绑定中的常见问题​

物品从池里取出时,先清理上次状态,再绑定新数据。回收前解除事件、停止动画并清除高亮。按钮监听不要在每次刷新时重复添加。

拖动层改变父节点后要处理坐标空间。结束时无论合法与否,都把对象归还确定的布局容器,并恢复原有射线设置,确保物品下次仍可被选中。

AI 任务与验收​

规则类已经存在。请只连接 UI 拖拽与状态刷新,明确 Inspector 引用。刷新同一个快照两次不能重复生成物品或注册监听。动画取消后基础画面必须与规则状态一致。

验证同一局连续合成、暂停中拖拽、后台中断、快速操作和重新打开场景。用格子编号与状态日志解释问题,比只发一张“好像错了”的截图更有效。