Godot 弹窗与 Modal 栈:大厅 UI 不混乱的关键
背景:弹窗与 Modal 栈为什么会变成真实问题 大厅开发到第三个月,弹窗开始失控:登录补偿、活动公告、背包满提示、二次确认、支付结果、网络重连都想抢屏幕。最糟的一次是玩家点购买礼包时,活动公告自动弹出,购买确认框被遮住,返回键关闭了公告却没有恢复确认框焦点。测试给的录屏里,遮罩层叠了三层,按钮还能点到下方大厅。
category
背景:弹窗与 Modal 栈为什么会变成真实问题 大厅开发到第三个月,弹窗开始失控:登录补偿、活动公告、背包满提示、二次确认、支付结果、网络重连都想抢屏幕。最糟的一次是玩家点购买礼包时,活动公告自动弹出,购买确认框被遮住,返回键关闭了公告却没有恢复确认框焦点。测试给的录屏里,遮罩层叠了三层,按钮还能点到下方大厅。
背景:3D 遮挡与 LOD为什么会变成真实问题 团队做一个小型 3D 城镇时,最初的思路很直接:把房屋、摊位、NPC、树和装饰全部放进主场景。编辑器里看起来很舒服,运行到低端显卡上却立刻露馅。玩家站在街角时,看不见的室内家具仍在渲染准备队列里,远处屋顶还是高模,广场另一头的 NPC 动画照常更新。
背景:可见性裁剪为什么会变成真实问题 横版关卡做压力测试时,帧率掉得很奇怪。屏幕里只有三四个敌人,Profiler 却显示 调用数量接近两百。原因是关卡设计把整张地图的机关、敌人、环境动画都提前放进场景树,镜头外的风车仍然在转,远处敌人仍然寻路,离屏粒子还在模拟。玩家看不见,但 CPU 和 GPU 都在付账。
背景:节点引用治理为什么会变成真实问题 有一次版本迭代,我们把角色面板从单列布局改成页签布局。改 UI 的同学只是把 挪到了 ,结果战力显示、装备红点、属性动画同时挂掉。脚本里到处写着硬编码路径,几个路径还藏在动画回调和工具脚本里。
结合一个中型 Godot 客户端的实战改造,梳理 PackedScene 实例化、节点入树、ready 时机、释放与复用之间的边界。