具体类型:打开已有系统界面的拍脸(新手奖励本地实例)
本文只讲:复用已有 SceneId,通过一个拍脸 Item 直接打开已存在的 Window。
当前实例目标 Window:_MOE.WindowName.UI_NoviceReward_MainView。
当前配置和 Lua 均为本地链路实例,不是新需求可直接复制的正式 ID/排序/业务条件。
0. 先判断是否属于“打开已有系统界面”的新增
0.1 类型对比
| 情况 |
识别条件 |
是否使用本文 |
应转向 |
| 直接打开已有 Window |
WindowName 已存在;当前场景允许打开;不需要 ActivityModel 根据活动配置选页 |
是 |
按本文 Step 1~6 |
| 按活动 ID 打开活动详情 |
已有真实 activityId,且 ActivityModel:ShowPushFaceActivity 已有活动映射 |
否 |
通用模板“通过 ActivityModel 打开活动页”分支 |
| 目标 UI 尚不存在 |
Window、资源或打开入口尚未实现 |
否 |
先完成 UI/业务功能,再接拍脸;不要在 Item 中虚构 WindowName |
| 需要异步资源/数据 |
UI 打开前必须下载资源、请求协议或等待模型就绪 |
不直接使用 |
通用模板“异步资源/数据准备”分支;先设计就绪和失败推进 |
| 纯逻辑、没有 UI |
只发事件、打点、刷新或执行一次逻辑 |
否 |
通用模板“纯逻辑”分支;HandleShow 完成后 return false |
| Feature 内已有 UI |
配表 featureName 非空,Window/业务模型属于副玩法包 |
仅复用本文接口思路 |
Item 放 Feature/<featureName>/Script/PushFace/Items/,并验证 Feature 包加载 |
0.2 使用本文的必要条件
全部满足才使用本文:
0.3 快速判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 目标界面已存在? ├─ 否 → 先实现 UI,不使用本文 └─ 是 ├─ 应由 activityId 决定活动详情? │ ├─ 是 → ActivityModel 分支 │ └─ 否 ├─ 是否依赖尚未就绪的数据/资源? │ ├─ 是 → 异步准备分支 │ └─ 否 ├─ 是否真的会打开一个可关闭的 UI? │ ├─ 否 → 纯逻辑分支,HandleShow 返回 false │ └─ 是 → 使用本文:NeedShow + OpenWindow └─ 是否属于 Feature? ├─ 是 → 使用 Feature Item 目录 └─ 否 → 使用主玩法 Items 目录
|
1. 当前本地实例与目标
1.1 已交叉验证的当前事实
配置导出中已存在
只读核对文件:
1
| letsgo_common/excel/Export/pbin/PushFaceData_Total.txt
|
当前行:
| 字段 |
当前值 |
说明 |
id |
1000128 |
当前本地已占用示例,不可作为新需求 ID 复用 |
sortId |
0 |
本地链路测试值,不代表正式排序建议 |
codeName |
NoviceRewardLocalTest |
明确带 LocalTest,正式提交应替换/清理 |
fequency |
1 |
Always |
open |
true |
已开启 |
needLevel |
1 |
等级前置 |
sceneIds |
1 |
当前导出 Scene 1;对应 Scene 表中 LoginDone |
activityId |
未配置 |
本例直接打开 Window,不走 ActivityModel |
featureName |
未配置 |
走主玩法 Item 目录 |
1000128 已被当前本地实例占用。新增正式配置必须重新查重并申请/选择 <新ID>,不能复制该 ID。
Item 文件已存在
1
| LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_NoviceRewardLocalTest.lua
|
当前行为:
1 2 3 4
| NeedShow 恒 true(仅本地测试) → AddPushFaceItemCount → OpenWindow(UI_NoviceReward_MainView) → 无显式返回,等待 UI 关闭事件推进
|
目标 Window 已存在
源码可检索到:
1
| _MOE.WindowName.UI_NoviceReward_MainView
|
本例打开目标:
1 2 3
| _MOE.UIManager:OpenWindow( _MOE.WindowName.UI_NoviceReward_MainView )
|
1.2 本例要验证什么
1 2 3 4 5 6
| 配置能被 Scene 1 收集 → 动态 require 到 PushFace_NoviceRewardLocalTest.lua → NeedShow=true 时入队 → 按同 Scene 排序消费 → HandleShow 打开新手奖励主界面 → 关闭界面后继续下一个拍脸
|
不验证:
- 新手奖励正式业务条件是否已确定。
1000128 是否可用于正式版本。
sortId=0 是否符合正式同 Scene 排序。
- Scene 1 是否一定是新需求最终触发时机。
2. 完整步骤:新手奖励实例
Step 1:配表
1.1 唯一编辑入口
1 2
| letsgo_common/excel/xls/P_拍脸.xlsx └─ sheet:拍脸内容
|
禁止直接编辑:
1 2 3
| letsgo_common/excel/Export/pbin/PushFaceData_Total.txt letsgo_common/excel/client/data/PushFaceData_Total.txt 对应的 .pbin
|
1.2 当前本地示例行
| 字段 |
示例值 |
正式化动作 |
id |
1000128 |
换成已查重的 <新ID>;该值不可复用 |
sortId |
0 |
比较同 Scene 全量配置后确定 <正式sortId> |
codeName |
NoviceRewardLocalTest |
换成正式 <CodeName>,并同步 Item 文件名 |
fequency |
1 |
按正式需求确认 1/2/3 |
open |
true |
正式开关按发布计划确认 |
needLevel |
1 |
按正式需求确认 |
sceneIds |
1 |
仅在正式触发确为 LoginDone 时保留 |
activityId |
空 |
直接打开已有 Window 时通常无需填写 |
featureName |
空 |
主玩法目录;若迁移到 Feature,必须填写真实 Feature 名 |
1.3 SceneId 查证
当前只读 Scene 导出:
1
| letsgo_common/excel/Export/pbin/PushFaceSceneData.txt
|
当前事实:
1 2 3
| id: 1 sceneKey: "LoginDone" checkFunc: "CheckLoginDone"
|
运行条件还需核对 PushFaceModel:CheckLoginDone:
1 2
| 必须位于允许大厅拍脸的场景 且 UIManager:IsOnLobbyViewWithNoDefaultWindowVisible() 为 true
|
正式需求若不是“登录完成且大厅窗口状态满足”,不要因为本例是 sceneIds=1 就照抄。
1.4 排序查证
当前框架:
1 2
| table.sort(PushFaceList, function(a, b) return a.sortId > b.sortId end) local CheckCell = CheckList[#CheckList]
|
因此:
1 2 3
| sortId 降序排列 + 从队尾消费 = 较小 sortId 先消费
|
sortId=0 会倾向于比同 Scene 的较大值更早消费,但它只是当前本地示例。正式值仍必须导出并比较同 Scene 配置,明确要排在哪两个现有项之间;相同 sortId 不得依赖稳定顺序。
1.5 频率查证
fequency |
含义 |
1 |
Always,总是;仍受业务条件和“今日不再显示”等状态影响 |
2 |
OneDayOnce,每日一次 |
3 |
Once,总共一次 |
字段名当前实际拼写是 fequency,不要自行改为 frequency。
Step 2:编写 Item
2.1 文件路径与动态加载
当前文件:
1
| LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_NoviceRewardLocalTest.lua
|
配表关系:
1 2 3 4
| featureName 为空 → basePath = LetsGo.Script.PushFace.Items codeName = NoviceRewardLocalTest → require LetsGo.Script.PushFace.Items.PushFace_NoviceRewardLocalTest
|
2.2 当前本地恒 true 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| return { NeedShow = function(SceneId, activityId, id) _MOE.Logger.Log( "[PushFace_NoviceRewardLocalTest] NeedShow", "SceneId=", SceneId, "activityId=", activityId, "id=", id ) return true end,
HandleShow = function(SceneId, activityId, id) _MOE.Logger.Log( "[PushFace_NoviceRewardLocalTest] HandleShow", "SceneId=", SceneId, "activityId=", activityId, "id=", id )
_MOE.Models.PushFaceModel:AddPushFaceItemCount() _MOE.UIManager:OpenWindow( _MOE.WindowName.UI_NoviceReward_MainView ) end }
|
提交前必须删除这个本地 Item,或把 NeedShow 恒 true 替换为正式条件,并同步清理 LocalTest 命名、测试 ID、测试排序和过量日志。
2.3 正式业务框架:直接打开新手奖励 Window
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| local function _NeedShowNoviceReward(SceneId, activityId, id) local model = <已确认的新手奖励业务Model> if not model then return false end
return model:<已确认的CanShow接口>(activityId) end
return { NeedShow = function(SceneId, activityId, id) return _NeedShowNoviceReward(SceneId, activityId, id) end,
HandleShow = function(SceneId, activityId, id) if not _NeedShowNoviceReward(SceneId, activityId, id) then return false end
_MOE.Models.PushFaceModel:AddPushFaceItemCount() _MOE.UIManager:OpenWindow( _MOE.WindowName.UI_NoviceReward_MainView ) end }
|
模板中的 <已确认...> 必须替换为源码真实对象和接口;本文不代填、也不虚构。
2.4 HandleShow 返回值必须正确
| 场景 |
应如何返回 |
原因 |
已调用 OpenWindow,等待窗口关闭推进 |
nil / 无返回通常即可 |
当前关闭事件会触发下一拍脸 |
| 打开 API 自身返回有意义结果 |
return result |
保留真实成功/失败语义 |
| 条件变化、业务 Model 缺失、打开 API 明确失败 |
return false |
没有 UI 可关闭,框架需立即推进 |
| 纯逻辑完成 |
return false |
同上 |
无论什么都 return true |
禁止 |
会掩盖未打开 UI的失败,可能卡住队列 |
当前 UIManager:OpenWindow 没有稳定的有意义成功返回值;它还可能因资源依赖或竖屏窗口限制提前返回。因此若业务需要可确认的打开结果,应使用业务已有、返回语义明确的封装,而不是擅自把 OpenWindow 包装成恒 true。
2.5 如果正式需求实际是“七日礼/七日 BP”
当前源码中已确认可参考的业务查询:
1 2 3
| _MOE.Models.NoviceRewardModel:GetCacheSevenDayDetailActData() _MOE.Models.NoviceRewardModel:GetSevenDayBPHasUnRewardList(activityId, true) _MOE.Models.NoviceRewardModel:GetIsSevenDayBPOpen(activityId)
|
已有参考 Item:
1 2
| LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_SevenDayBP.lua LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_SevenDayBPForWX.lua
|
参考逻辑表达的是:
1 2 3 4 5
| 缓存详情已就绪 → 查询是否有未领取奖励 → 查询七日 BP 开启/界面形态 → 叠加微信大厅/引导条件 → 决定是否展示
|
但必须注意:
- 这些接口已在当前源码存在,不代表“新手奖励”正式需求一定等于七日 BP。
- 是否采用、采用哪些返回值、是否需要活动 ID、是否区分微信大厅,必须由正式需求和目标界面逻辑确认。
- 如果最终要按活动 ID 打开七日活动详情,应转到 ActivityModel 分支,而不是机械地直接打开
UI_NoviceReward_MainView。
- 不要把参考代码中的活动 ID、引导 ID或平台条件复制到新需求。
Step 3:导表
1 2 3 4
| 修改 P_拍脸.xlsx → 使用团队现行表工具 Compile → 执行 Pbin → 核对 PushFaceData_Total.txt / PushFaceSceneData.txt
|
导出后核对:
1
| rg -n "<新ID>|<正式CodeName>" letsgo_common/excel/Export/pbin/PushFaceData_Total.txt
|
通过标准:
- 新 ID 唯一。
sortId/codeName/fequency/open/needLevel/sceneIds/featureName 与 Excel 一致。
- 没有通过手改 txt/pbin 制造“本地看起来正确”的假结果。
- 若本次未新增 SceneId,
PushFaceSceneData 不应出现无关变更。
Step 4:静态检查
4.1 配置与文件
| 检查 |
预期 |
| ID |
不使用已占用 1000128;新 ID 全局唯一 |
codeName |
与 PushFace_<codeName>.lua 完全一致 |
featureName |
本例为空;迁移 Feature 时与路径一致 |
| SceneId |
正式触发时机与 Scene 的 sceneKey/checkFunc 一致 |
| 排序 |
已比较同 Scene 项;知道较小值先消费 |
| 频率 |
数字与业务语义一致 |
| Window |
_MOE.WindowName.UI_NoviceReward_MainView 在当前源码存在 |
4.2 Item 接口
1 2 3 4
| return table ├─ NeedShow:正式条件;本地阶段可临时 true ├─ HandleShow:打开已确认 Window └─ ShouldKeepInQueue:本例不需要,不要无故添加
|
检查命令示例:
1
| rg -n "NeedShow|HandleShow|return true|return false|UI_NoviceReward_MainView" LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_<正式CodeName>.lua
|
4.3 返回值检查
- 打开成功路径:无返回或传播真实打开结果。
- 条件失效/Model 缺失:
return false。
- 不允许所有路径统一
return true。
AddPushFaceItemCount 不应在明确失败前调用;若业务 API 能返回 false,应在结果非 false 后计数。
Step 5:本地测试
5.1 触发前准备
- 确认测试账号等级满足
needLevel。
- 确认处于 Scene 1 对应的登录完成大厅环境。
- 确认没有 Loading、强引导、回流屏蔽或基础资源未就绪。
- 确认目标 UI 当前没有打开。
- 若测试
fequency=2/3,先明确是否需要清理对应本地展示缓存。
5.2 观察顺序
1 2 3 4 5 6 7 8 9 10 11
| TriggerPushFaceListBySceneId(1) → CollectPushFaceListBySceneId(1) → 找到 id=1000128 / NoviceRewardLocalTest → _checkPreConditions 通过 → require PushFace_NoviceRewardLocalTest → NeedShow 返回 true → 频率检查通过 → 按 sortId 降序入队排序 → 从队尾消费 → HandleShow → OpenWindow(UI_NoviceReward_MainView)
|
5.3 测试矩阵
| 用例 |
操作 |
预期 |
| 本地通链 |
保留临时 NeedShow=true,进入触发场景 |
打开新手奖励主界面 |
| UI 关闭 |
关闭新手奖励主界面 |
收到关闭事件并推进下一个拍脸 |
| 正式条件命中 |
替换正式条件,准备可展示账号状态 |
NeedShow=true 且打开 UI |
| 正式条件不命中 |
清空奖励/关闭活动/让数据未就绪 |
NeedShow=false,不入队 |
| 消费时条件变化 |
收集后、打开前让条件失效 |
HandleShow return false,立即推进 |
| 同 Scene 排序 |
同时命中相邻配置 |
实际顺序与“较小 sortId 先消费”一致 |
| 频率 |
重复触发、跨日/重登按需求测试 |
与 fequency 一致 |
| 资源拦截 |
模拟目标资源依赖未满足 |
不应假装打开成功并永久卡队列;记录业务处理方案 |
Step 6:正式化与清理
6.1 必须替换
| 本地内容 |
正式化要求 |
id=1000128 |
当前已占用示例;新需求使用已查重 <新ID> |
sortId=0 |
比较同 Scene 后确定正式值 |
codeName=NoviceRewardLocalTest |
改为正式业务名,文件同步重命名 |
NeedShow return true |
替换为正式业务条件 |
| 本地详细日志 |
只保留必要、可检索、不泄漏数据的正式日志 |
sceneIds=1 |
重新确认正式触发时机后决定 |
fequency=1 |
重新确认正式频率后决定 |
6.2 必须删除或确认不提交
3. 完整树状调用链
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| 登录完成/大厅创建 └─ PushFaceModel:OnLobbyCreate └─ TriggerPushFaceListBySceneId(Enum_SceneId.LoginDone, true) ├─ EnsureSceneIdConfigInited │ └─ P_拍脸.xlsx / 拍脸SceneId │ └─ Scene 1: LoginDone → CheckLoginDone ├─ PushFaceTable.LoadWebConfig(callback) └─ CollectPushFaceListBySceneId(1) ├─ PushFaceTable.GetPushfaceConfigBySceneId(1) │ └─ 读取 PushFaceData_Total 中 sceneIds 包含 1 的行 ├─ _checkPreConditions │ ├─ open=true │ ├─ id 不在现有队列 │ ├─ 等级满足 needLevel │ ├─ 平台满足 loginPlatArr │ └─ 时间满足 CheckCanShow ├─ _getConfigByCodeName │ └─ require LetsGo.Script.PushFace.Items.PushFace_NoviceRewardLocalTest ├─ Item.NeedShow(1, activityId, 1000128) ├─ _checkFrequencyLimit(fequency=1) ├─ 加入队列 └─ sortId 降序排序 └─ 当前消费时从队尾取较小值 └─ TryShowNextAutoShowWindow ├─ CheckLoginDone └─ HandleShowByList(1) ├─ 可选 ShouldKeepInQueue(本例没有) ├─ Item.HandleShow │ ├─ AddPushFaceItemCount │ └─ UIManager:OpenWindow(UI_NoviceReward_MainView) └─ SavePushFaceTime ├─ HandleShow=false → 立即继续下一项 └─ nil/true/无返回 → 等待 UI 关闭 └─ ON_CLOSE_WINDOW_IMMEDIATELY └─ OnCloseWindowImmediately └─ TryShowNextAutoShowWindow
|
4. 迁移到商城/签到/其他已有界面的替换矩阵
以下只使用占位符。必须先从对应模块源码确认真实 WindowName、Model、参数和展示条件。
| 迁移目标 |
配表 codeName |
NeedShow |
HandleShow |
额外确认 |
| 商城已有界面 |
<ShopPushFaceCodeName> |
<ShopModel>:<CanShowMethod>(...) |
<ShopOpenAPI>(<已确认参数>) 或 OpenWindow(<ShopWindowName>) |
页签参数、商品数据是否就绪、场景是否允许 |
| 签到已有界面 |
<CheckInPushFaceCodeName> |
<CheckInModel>:<HasRewardOrCanShow>(...) |
<CheckInOpenAPI>(...) |
是直接 Window 还是 ActivityModel;活动 ID是否真实存在 |
| 其他主玩法界面 |
<BusinessPushFaceCodeName> |
<BusinessModel>:<CanShow>(...) |
OpenWindow(<BusinessWindowName>, <Args>) |
WindowName、参数、资源依赖、关闭事件 |
| Feature 内已有界面 |
<FeaturePushFaceCodeName> |
<FeatureModel>:<CanShow>(...) |
<FeatureModel>:<Open>(...) |
填真实 featureName;Item 放 Feature 目录;包体加载 |
| 打开 API 有返回值 |
<CodeName> |
<FormalCondition> |
return <OpenAPI>(...) |
明确 false 是否代表未打开;不要吞掉结果 |
| 打开 API 无返回值 |
<CodeName> |
<FormalCondition> |
OpenWindow(<WindowName>, ... ) 后不返回 |
确认调用确实发起打开,失败前置要返回 false |
替换时不能只换 WindowName;至少重审:
1 2 3 4 5 6 7 8
| SceneId → featureName → NeedShow 条件 → 打开参数 → 异步依赖 → frequency → 同 Scene sortId → 关闭推进
|
5. 常见错误与排查
5.1 常见错误
| 错误 |
现象 |
正确处理 |
复用 1000128 |
配置覆盖/冲突 |
它已被本地实例占用;新需求重新查重 |
直接改 PushFaceData_Total.txt |
重导后丢失、环境不一致 |
改 P_拍脸.xlsx 后 Compile → Pbin |
sortId 越大越先的误判 |
展示顺序相反 |
当前是降序排、队尾消费,较小值先 |
正式保留 NeedShow=true |
每次满足框架条件都入队 |
替换正式活动/奖励/数据条件 |
HandleShow 恒 return true |
未开 UI 时队列等待关闭事件 |
失败返回 false;成功传播真实结果或不返回 |
| 未打开 UI却无返回 |
当前队列卡住 |
返回 false,立即推进 |
| WindowName 拼错 |
加载/打开失败 |
从 _MOE.WindowName 和现有调用点查证 |
| 忽略资源依赖 |
OpenWindow 被资源检查拦截 |
采用业务正式打开入口或设计资源就绪链路 |
AddPushFaceItemCount 先于明确失败 |
统计虚高 |
有业务返回结果时,仅在 result ~= false 后计数 |
| 把七日 BP 参考当正式需求 |
条件、活动、界面错误 |
由产品/业务确认是否真正采用三个参考接口 |
| Feature 配表却放主目录 |
require 失败 |
featureName 与 Item 路径一致 |
5.2 建议断点
1 2 3 4 5 6 7 8 9 10 11
| PushFaceModel:OnLobbyCreate PushFaceModel:TriggerPushFaceListBySceneId PushFaceModel:CollectPushFaceListBySceneId PushFaceModel:_checkPreConditions PushFaceModel:_getConfigByCodeName PushFace_NoviceRewardLocalTest.NeedShow PushFaceModel:HandleShowByList PushFace_NoviceRewardLocalTest.HandleShow UIManager:OpenWindow PushFaceModel:OnCloseWindowImmediately PushFaceModel:TryShowNextAutoShowWindow
|
5.3 建议日志关键字
1 2 3 4 5 6 7 8
| PushFaceModel:TriggerPushFaceListBySceneId PushFaceModel:CollectPushFaceListBySceneId accepted PushFaceModel:_checkPreConditions PushFaceModel:HandleShowByList CheckCell.codeName [PushFace_NoviceRewardLocalTest] NeedShow [PushFace_NoviceRewardLocalTest] HandleShow UIManager:OpenWindow ON_CLOSE_WINDOW_IMMEDIATELY
|
5.4 按现象定位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 完全没有触发日志 └─ 查 OnLobbyCreate / Scene 触发入口
有 Collect、没有 accepted ├─ open / needLevel / platform / time ├─ NeedShow=false └─ frequency 已命中
提示 failed to load config └─ 查 codeName / featureName / 文件路径 / 返回 table
进入 HandleShow 但 UI 不见 ├─ WindowName 是否真实 ├─ 资源依赖是否拦截 ├─ 竖屏窗口限制是否拦截 └─ 当前场景/层级是否允许
UI 不见且后续拍脸不走 └─ HandleShow 未打开 UI却返回 nil/true;失败分支应 return false
展示顺序不对 └─ 导出同 Scene 配置,按“较小 sortId 先消费”重算
|
6. 验收与清理 Checklist
6.1 功能验收
6.2 配置验收
6.3 代码清理
6.4 回归与提交
7. 风险与依据
7.1 风险
| 风险 |
本例表现 |
控制措施 |
| 把本地示例当正式配置 |
复用 1000128/0/LocalTest |
正式需求重新查重、排同 Scene 顺序、改名 |
| 恒 true 提交 |
每次均满足业务条件 |
提交前扫描 NoviceRewardLocalTest 与 return true |
| UI 打开失败但等待关闭 |
后续队列卡住 |
最后防御;失败返回 false;不写死 true |
| Scene 误用 |
登录时机不符合业务 |
查 sceneKey/checkFunc/触发入口 三者 |
| 排序误解 |
与其他登录拍脸抢顺序 |
牢记较小值先消费,比较同 Scene 全量 |
| 参考七日礼条件误套 |
业务语义错误 |
三个接口仅是已存在参考,是否采用由正式需求确认 |
| 资源依赖被忽略 |
OpenWindow 提前返回 |
查资源包与正式业务打开入口,设计失败推进 |
7.2 已核对源码依据
| 事实 |
位置 |
| 本地 Item 已存在并打开新手奖励 Window |
LetsGo/Content/LetsGo/Script/PushFace/Items/PushFace_NoviceRewardLocalTest.lua |
| WindowName 注解与系统枚举记录存在 |
LetsGo/Content/LetsGo/Script/Config/WindowName.lua、Config/CommonDefine.lua |
本地配置 1000128 当前已导出 |
letsgo_common/excel/Export/pbin/PushFaceData_Total.txt |
Scene 1 是 LoginDone/CheckLoginDone |
letsgo_common/excel/Export/pbin/PushFaceSceneData.txt |
| 动态 require 路径规则 |
LetsGo/Content/LetsGo/Script/PushFace/PushFaceModel.lua |
| 排序与队尾消费 |
同文件:CollectPushFaceListBySceneId、HandleShowByList |
HandleShow=false 立即推进 |
同文件:HandleShowByList |
OpenWindow 本身无稳定成功返回,且可能被资源/窗口限制提前拦截 |
LetsGo/Content/LetsGo/Script/Core/UI/UIManager_Deprecated.lua |
| 七日 BP 三个参考接口的真实用法 |
PushFace_SevenDayBP.lua、PushFace_SevenDayBPForWX.lua |
本文没有提供新的真实配置 ID、正式 SceneId、正式排序值、活动 ID或商城/签到 API。所有占位符都必须在对应正式需求中从源码和配置交叉查证后替换。
本文从 LearnByCompany 原始文档 自动同步。