Files
youle_cocos/docs/superpowers/specs/UI-迁移参照手册.md
T
2026-09-05 00:12:11 +08:00

3404 lines
321 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UI 迁移参照手册(Game_Surface_3 → YouleNexus)
> **Status**: v1 (2026-09-03)
> **Purpose**: 记录已迁移 Layer 的 prefab 结构,作为之后**脚本绑定与驱动 UI** 的唯一参照。每个 prefab 的节点名、组件、坐标、spriteFrame、文本/字体均在此列出,脚本开发时无需回查 prefab JSON 或源数据。
> **权威源**: Layer XML(`projects/Game_Surface_3/save/Layer*.xml`)+ gameabc_Object.json + gameabc_Image.json。
---
## 1. 全局迁移规则(实测确立)
### 1.1 设计分辨率与布局策略
- 源工程(Game_Surface_3)UI 设计分辨率:**1280×720**。
- 新工程(YouleNexus)画布:**1600×720(有意设计)**。
- 布局策略:**1280×720 的 UI 在 1600×720 画布中水平居中**(左右各留 160 空白),全屏背景拉伸到 1600 填满。
> 水平居中靠 Widget `alignFlags=16`(水平居中)+ `_horizontalCenter = lpos.x` 实现(见 1.4),不是改坐标中心。
### 1.2 坐标系换算(源左上角 → Cocos 中心)
源数据 X/Y 是左上角锚点(Layer XML 的 `X`/`Y` = gameabc_Object.json 的 `Left`/`Top`):
```
lpos.x = X + W/2 - 640 // 相对 1280 中心
lpos.y = 360 - (Y + H/2) // Y-up 翻转,相对 720 中心
```
> 中心取 **640/360(1280×720)**,不是 800/360。1600 的居中由 Widget 实现。
### 1.3 组件类型映射
**组件类型以 gameabc_Object.json 的 `ObjectType` 为准**(CLAUDE.md 已修正旧文档 off-by-one 与 SpiritType 误用):
| ObjectType(JSON,权威) | 含义 | Cocos 组件 |
|---|---|---|
| 2 | Sprite | cc.Sprite |
| 4 | Text | cc.Label |
Layer XML 的 `SpiritType` 是细分类,只作参考:
| SpiritType(XML) | 含义 |
|---|---|
| 0 | 普通 Sprite |
| 1 | Text |
| 3 | 帧 Sprite(带 `Frame` 属性;`frame_all=1` 时无多帧效果) |
### 1.4 Widget 规则
| 节点类型 | alignFlags | 说明 |
|---|---|---|
| root / group / 全屏背景 | **45**(全拉伸) | contentSize 1600×720,填满画布 |
| 固定元素 | **16**(水平居中)+ `_horizontalCenter = lpos.x` | 实现 1280 UI 在 1600 画布居中 |
> ⚠️ **校验不变量**:alignFlags=16 的节点,`_lpos.x` 必须 `=== _horizontalCenter`(anchor=0.5、父居中、isAbs=true 时恒成立)。引擎 align() 里 `x = targetCenter + (anchorX-0.5)*width + horizontalCenter`,偶发编辑器回调把 horizontalCenter 翻倍(实测 Layer613 背景 12→24)。迁移后逐节点校验,不符就用 `edit_prefab_json` 改回。
### 1.5 spriteFrame 引用
- `cc.Sprite._spriteFrame` 必须是**对象形式** `{"__uuid__": "…@f9941", "__expectedType__": "cc.SpriteFrame"}`。
- ⚠️ `create_sprite` 的 `spriteFrameUuid` 参数会把 `_spriteFrame` 写成**裸字符串** `"…@f9941"`(坏引用,`validate_prefab_references` 报 `referenceCount:0`、运行时加载不到图)。正确做法:`create_sprite` 不传 spriteFrameUuid,用 `set_component_property` 设 `_spriteFrame` = 对象 JSON;或事后用 `edit_prefab_json` 修。
- `_type=0`(SIMPLE)、`_sizeMode=0`(CUSTOM)+ `_contentSize` = 源 W/H。
- ⚠️ `create_sprite` 默认 `_sizeMode=1`(TRIMMED)会覆盖 contentSize,必须显式 `_sizeMode=0`。
### 1.6 全屏背景 contentSize
源 1280×720 的全屏背景(如 `00011.png` 纯色遮罩,图片本身仅 4×4)→ contentSize **1600×720**(拉伸填满)。固定元素 contentSize = 源 W/H。
### 1.7 Text 对象字段映射
**文本/fontSize 的权威源是 Layer XML**(`Property Name="FontSize"` / `Text` 等),gameabc_Object.json 里 Text 对象只有语义名(ObjectName)+ W/H,**无 fontSize/文本**。
| 源字段(Layer XML,SpiritType=1) | cc.Label | 说明 |
|---|---|---|
| `FontSize` | `_fontSize` | **字体大小保持源值,不统一** |
| `FontColor` | `_color.r/g/b` | 整数按 **0xBBGGRR** 存储(高位 B、低位 R):`16777215`=`0xFFFFFF`=白;`1059174`=`0x102966`→RGB(102,41,16)。实测 Layer601/608 验证 |
| `FontColorA` | `_color.a` | 透明度 |
| `Text` | `_string` | 初始文本(常 = ObjectName 占位,运行时由脚本替换) |
| `LineSpace` | `_lineHeight` | 当前用 `lineHeight = fontSize`(见 5.待验证) |
| `FontBold` | 加粗 | 待验证映射(复杂 Layer 补齐) |
| `AlignHorz` / `AlignVert` | `_horizontalAlign` / `_verticalAlign` | 待验证映射 |
| `WordWrap` | `_overflow` / `_enableWrapText` | 待验证映射 |
### 1.8 根节点命名
prefab 根节点名 = 文件名(如 `Layer619_BackHall.prefab` → 根节点 `Layer619_BackHall`),Cocos 约定。
### 1.9 九宫格(9-slice / SpiritType=5)
- 源 `SpiritType=5` 表示九宫格,边距来自 Layer XML 的 `LeftEdge`/`TopEdge`/`RightEdge`/`BottomEdge`。
- **Cocos 3.8 的九宫格边距不在 Sprite 组件上**(`cc.Sprite` 只有 `_type=1` SLICED 标志,无 inset 字段),而是存在**图片资源 spriteFrame 的 `border` 字段**:`.meta` 里 spriteFrame subMeta 的 `userData.borderLeft/Top/Right/Bottom`,导入后写入 library spriteFrame 的 `capInsets`(顺序 `[left, top, right, bottom]`)。
- 迁移步骤:① Sprite `_type=1`(SLICED)+ `_sizeMode=0` + contentSize = 源 W/H;② 图片 spriteFrame 的 border 设为 LeftEdge/TopEdge/RightEdge/BottomEdge(改 `.meta` 的 4 个数值 + `refresh_assets`,属图片资源配置,一次设置服务所有共享该图的 Layer)。
- ⚠️ 图片被多 Layer 共享时,先确认各处九宫格边距一致(同一图片的边距是图片固有属性);若不一致,需为不同边距各建 spriteFrame 副本。改 `.meta` 属触碰 CLAUDE.md「禁手改 .meta」边界,须先征得同意(只动 4 个非引用数值,不碰 UUID)。
### 1.10 多帧 sprite 帧号循环(取模)
gameabc 引擎的多帧 sprite 帧号是**循环(取模)**的:图片共 `frame_all` 帧时,`Frame`(Layer XML)/ `FrameIndex`(gameabc_Object.json)= N 实际用第 `((N-1) % frame_all) + 1` 帧。
- 实测 Layer609 Spirit388 `Frame=3`,但 ImgID=30(00030.png)仅 `frame_all=2`,原工程实际渲染第 1 帧(`((3-1) % 2) + 1 = 1`),**不是数据错误**。
- 迁移多帧 sprite 前先核对 `Frame`/`FrameIndex` 是否 ≤ `frame_all`;越界则按上式回绕,帧 N 落到 `000XX_N.png` 的 spriteFrame UUID。
---
## 2. 已迁移 prefab 清单
截至 2026-09-04,源工程 `gameabc_Layer.json` 的 55 个 Layer 已全部落盘为 YouleNexus prefab(55/55)。
| prefab | 源 Layer | spirits | 内容 |
|---|---|---|---|
| `Layer614_Loading.prefab` | Loading_Layer (614) | 2 | 载入遮罩 + 载入动画 |
| `Layer616_Kick.prefab` | Kick_Layer (616) | 3 | 强制下线提示 + 底 + 文字 |
| `Layer619_BackHall.prefab` | BackHall_Layer (619) | 1 | Spirit465(返回大厅按钮) |
| `Layer613_RoomCardUpdate.prefab` | updateRoomCard_Layer (613) | 3 | 房卡修改遮罩 + 背景 + 提示文字 |
| `Layer615_Reconnect.prefab` | Reconnect_Layer (615) | 4 | 掉线遮罩 + 背景 + 重连动画(多帧)+ 重连文字 |
| `Layer10_Protol.prefab` | Protol_Layer (10) | 4 | 协议遮罩 + 背景(九宫格)+ 内容 + 关闭按钮 |
| `Layer612_Tips.prefab` | Tips_Layer (612) | 5 | 提示遮罩 + 提示背景 + 提示文字(2 组:普通提示 + 九宫格提示) |
| `Layer620_Record.prefab` | recordLayer (620) | 3 | 记录遮罩 + 记录背景(多帧)+ 记录动画(多帧) |
| `Layer618.prefab` | Layer618 (618) | 2 | 全屏背景 + 隐藏遮罩(2 组) |
| `Layer603.prefab` | Layer603 (603) | 3 | 遮罩 + 双帧图标(2 状态) |
| `Layer617_iMessage.prefab` | iMessage_Layer (617) | 4 | 顶部通知横幅:背景 + 文本 + 图标 + 关闭 |
| `Layer601.prefab` | Layer601 (601) | 5 | 遮罩(9-slice 零边距)+ 说明文字 + 双按钮 + 底部文字 |
| `Layer608_Help.prefab` | Help_Layer (608) | 7 | 帮助弹窗:遮罩 + 背景(9-slice)+ 标题 + 内容(长图)+ 关闭 |
| `Layer609_Setting.prefab` | Setting_Layer (609) | 15 | 设置弹窗:遮罩 + 背景(9-slice)+ 标题 + 3 组多帧按钮/图标 |
| `Layer602_inputPannel.prefab` | inputPannel (602) | 19 | 输入面板:遮罩 + 背景(9-slice)+ 12 键数字键盘 + 输入框(9-slice)+ 光标 + 删除 + 关闭 |
| `Layer606_Apply.prefab` | Apply_Layer (606) | 31 | 投票解散:遮罩 + 背景(9-slice)+ 底(9-slice)+ 标题 + 投票文字 + 同意/拒绝 + 等待列表×10 + 昵称列表×10 + 倒计时 + 确认键 |
| `Layer607_Cal.prefab` | Cal_Layer (607) | 20 | 计算器:输入框(9-slice)+ 光标 + 遮罩 + 背景(9-slice)+ 标题 + 光标 + 关闭 + 12 键数字键盘 + 图标 |
| `Layer4_MainMenu.prefab` | MainMenu_Layer (4) | 32 | 主大厅:全屏背景 + 创建/加入房间 + 底部 tab(设置/战绩/分享/任务/更多)+ 比赛场/星星场/商城/福袋/房间列表/二维码 + 公告栏 + 微信公众号/客服/房卡数量文字 |
| `Layer50_MainScene.prefab` | MainScene_Layer (50) | 11 | 主场景 HUD:全屏背景 + 顶部横幅(9-slice)+ 时钟(小时/冒号/分钟)+ wifi + 电量 + 数字 + 文本 |
| `Layer15_JoinRoom.prefab` | JoinRoom_Layer (15) | 26 | 加入房间弹窗:遮罩 + 背景(9-slice)+ 标题 + 房间号显示(6 位 FrameText)+ 数字键盘 12 键 + 关闭按钮 |
| `Layer19_WorldRoomList.prefab` | WorldRoomList_Layer (19) | 34 | 世界房间列表:遮罩 + 全屏背景(9-slice)+ 标题 + 刷新按钮 + 2 张房间卡片(各含头像/房主名/房间号 FrameText)+ 分页图标 + 列表文本 |
| `Layer27_CreateRoom.prefab` | CreateRoom_Layer (27) | 19 | 创建房间弹窗:遮罩 + 背景(9-slice)+ 标题 + 局数选择×2 + 下注上限选择×3 + 玩法选择×2 + 确定创建按钮(帧 1)+ 关闭按钮 + 选项标签(img27/28 frame)+ 4 个选项文本 |
| `Layer11_ChargeInfo.prefab` | ChargeInfo_Layer (11) | 4 | 充值提示弹窗:遮罩 + 背景(img54)+ 提示文字 + 补充文字 |
| `Layer13.prefab` | Layer13 (13) | 6 | 战绩弹窗(双 group):战绩返回 + 图标×2(img10)+ 战绩关闭按钮 + 分页箭头×2(img65) |
| `Layer22_Share.prefab` | Share_Layer (22) | 6 | 分享弹窗:遮罩 + 九宫格背景(img345)+ 标题 + 微信好友/朋友圈(img51 帧 1/2)+ Spirit691 |
| `Layer16_Bind.prefab` | Bind_Layer (16) | 7 | 绑定弹窗:遮罩 + 九宫格背景(img41)+ 绑定按钮×2(img188 帧)+ Spirit364 + 文本×2 |
| `Layer24_Neighbor.prefab` | NeighborLayer (24) | 7 | 邻居弹窗:遮罩 + 九宫格背景(img243 零边距)+ 邻居项×4(img244)+ 关闭按钮 |
| `Layer8_Notice.prefab` | Notice_Layer (8) | 9 | 公告/更多面板(双 group):隐藏遮罩 + 公告内容文字(group-3)+ 按钮托盘(img347)+ 6 功能按钮(img14 帧 5~10:背包/通知/绑定/排行榜/仓库/反馈) |
| `Layer18_Auth.prefab` | Auth_layer (18) | 9 | 授权弹窗:隐藏遮罩 + 九宫格背景(img41)+ 授权选项按钮×2(img201 帧 1/2)+ 授权主按钮(img202)+ 文本×4(空×2 + 占位×2) |
| `Layer17_PlayerInfo.prefab` | MenuPlayerInfo_Layer (17) | 15 | 玩家信息菜单:遮罩 + 九宫格背景(img54)+ 头像(img25)+ 边缘图标×2(img10)+ 按钮(img200)+ 签名底(img407)+ 文本×8(昵称/ID/签名等动态填充) |
| `Layer21_RankList.prefab` | rankList_Layer (21) | 20 | 排行榜列表:遮罩 + 九宫格背景(img2)+ 列表底(img42)+ 竖线分隔(img235)+ 标题(img425)+ 底部栏(img234)+ 箭头(img233)+ 图标×3(img116/106/24)+ 文本×7(排行榜条目,含暗红名次) |
| `Layer12_CombatLayer.prefab` | CombatLayer (12) | 27 | 战绩弹窗(三 group):遮罩 + 九宫格背景(img353)+ 战绩标题(img40)+ 返回(img34 帧2)+ 底/前景×6(img10)+ 横条×2(img23)+ 详情/查牌(img35 帧1/2)+ 文本×6 + 装饰图标(img171/172 帧1/6 帧1/357 帧1/356/355 帧1) |
| `Layer7_ewm.prefab` | ewm_Layer (7) | 30 | 二维码弹窗(双 group + 全局帧动画):遮罩×2 + 九宫格背景×2(img411)+ 标题(img412 九宫格 / img414 帧1)+ 关闭×2(img415)+ 内容底×6(img10)+ 按钮×3(img413 帧1/2)+ 底×3(img416/419/420 九宫格)+ 图标(img432 帧1)+ 帧动画(img417 13帧)+ 文本×7 |
| `Layer9_Feedback.prefab` | Feedback_Layer (9) | 34 | 反馈/通知/二维码/房间列表(四 group):反馈弹窗(遮罩 + 九宫格 img41 + 提交 img168 + 提交态 img438 帧1/2 + 标题 img169 + 输入文本)+ 通知(遮罩 + 九宫格 img346 + 标题 img40 / 标题内容 img6 帧3 + 关闭 img33 + 内容页 img338/339/340 + 条目 img216 帧2 + 标签 img217 帧1/3/5 + 底 img218/10 + 文本)+ 二维码(遮罩 + 九宫格 img423 + 图 img115 + 文字 img114 + 底 img80)+ 房间列表(遮罩 + 九宫格 img38 + 列表项 img50/11 + 数字帧动画 img49 帧1) |
| `Layer29_PhoneInfo.prefab` | PhoneInfo_Layer (29) | 38 | 手机验证/白名单管理(双 group):手机验证弹窗(group-106,遮罩 + 九宫格背景 img2 + 输入框 img407×2 + 验证码按钮 img429 帧2 + 帧动画 img433 倒计时 + 关闭 img33 + 确认 img34 帧1 + 大按钮 img434 帧1 + 标签 img436 帧1/2 + 图标 img435 帧1/2)+ 白名单管理/搜索玩家(group-108,遮罩 + 九宫格背景 img411 + 内容底 img10×2 + 关闭 img415 + 按钮 img412×3 + 底 img419 + 按钮 img413×2 + 图标 img188 帧1 + 文本×10) |
| `Layer6.prefab` | Layer6 (6) | 53 | 对局主界面(双 group):group-103 牌桌主界面(房间列表背景 img13 全屏隐藏 + 牌桌元素 img7/36/10/26/77/92/78/176/207/79/45/333/387/421 + FrameText 数字 img203 + 文本×9)+ group-3 玩家信息头部(头像框 img24 / 头像 img25 / 昵称 / ID / 购买房卡 img17 / 底牌栏 img18 九宫格×2 / FrameText 金币 img19 / img16 / img204) |
| `Layer14_Pay.prefab` | Pay_Layer (14) | 43 | 支付金额选择(双 group):group-53 金额选择面板(遮罩 img11 + 九宫格背景 img41 + 标题 img189 帧1 + 关闭 img33 + 金额按钮×10 img190 帧1 + 金额文本×10 + 金额数字 FrameText×10 img191 帧1)+ group-54 确认支付弹窗(遮罩 img11 + 九宫格背景 img197 + 标题 img196 帧1 / img195 + 金额数字 FrameText img192 帧1 + 按钮 img193 帧1/3 + 大按钮 img194) |
| `Layer25_wareHouse.prefab` | wareHouseLayer (25) | 68 | 仓库(四 group):group-91 主框架+左侧 tab+物品格子+关闭(遮罩 img11 + 九宫格背景 img374 + 标题 img327 + tab img332 帧1/2 + tab 图标 img335 帧1/3 + 确认键 img34 帧1 + 物品格子 img328 12帧 + 关闭 img33);group-92 数字/输入框/按钮(图标 img204 + FrameText 数字 img329 + 图标 img324 + 小按钮 img326 帧1/2 + 输入框 img323 + 输入条 img325 帧1/2 + 小按钮 img322 帧2/3 + 文本);group-93 输入区(小按钮 img322 帧3 + 输入框 img323 + 按钮 img337 帧1/2 + FrameText 数字 img329 + 按钮 img334 + 文本);group-94 输入区(图标 img324/img16/img204 + FrameText 数字 img329 + 头像框 img336 + 文本×2 + 小按钮 img322 帧1/2/3 + 输入框 img323 + 输入条 img325 帧3/1/2 + 按钮 img330) |
| `Layer26_Task.prefab` | Task_Layer (26) | 46 | 任务列表(单 group-10,横向滚动):遮罩 img11 + 前景 img10 + 九宫格背景 img2(边框 250/200/346/245)+ 标题 img40 + 横幅 img6 帧2 + 关闭 img33 + 任务卡片×5(背景 img43 帧1 / 领取 img55 帧1 / 做任务 img32 帧1)+ 描述×4 + 奖励说明×4 + 进度背景 img56×4 + 进度前景 img57×4 + 已领取 img58 帧2×4 + 进度文字×4 |
| `Layer28_SeniorOptions.prefab` | SeniorOptions_Layer (28) | 56 | 高级选项(单 group-83):全屏遮罩 img382 + 左侧设置面板(九宫格背景 img383 边框 55/45/55/45 + 标题 img385 + 图标 img384/img230 + 内框 img386 九宫格 + 选项按钮 img219 帧1/2/3 / img225 帧2 / img391 帧2 / img426 帧1/2 + 勾选框 img390 帧2 + 数字 FrameText img227 帧1×6 + 短号输入 img228 帧1 + 分隔线 img220 + 图标 img221/img389/img388/img395 + 按钮 img387/img408/img397 + 文本×6)+ 右侧大面板(九宫格背景 img392 + 标题 img393 + 内框 img386 + 按钮 img410 + 文本×5)+ 下方按钮(img224 九宫格 90/90/90/90 + img210 九宫格 103/20/103/20 + img229 + 分享好友/朋友圈 img236 帧2/3) |
| `Layer402_GameNotice.prefab` | GameNoticeLayer (402) | 2 | 游戏公告滚动(单 group-56):九宫格横幅背景(img39 边框 1/1/1/1)+ 公告内容文字 |
| `Layer403.prefab` | Layer403 (403) | 1 | 准备按钮(单 group-81,img208 帧1) |
| `Layer404_MainSceneButton.prefab` | MainSceneButton_Layer (404) | 6 | 主场景按钮(单 group-28):顶部横幅(img87)+ 开始按钮(img208 帧2)+ 双态按钮(img215 帧1/2)+ 底条(img181 帧1)+ 文本 |
| `Layer405_MainButton.prefab` | MainButton_Layer (405) | 6 | 主按钮(单 group-21):录音/消息按钮(img68 帧2/1)+ 消息图标(img343)+ 九宫格底(img342 边框 13/13/13/13)+ 文本×2 |
| `Layer411.prefab` | Layer411 (411) | 6 | 房号栏(单 group-81):房号背景(img400)+ 解散/退出按钮(img404 帧2/1)+ 房号数字 FrameText(img398)+ 房号 tag(img399)+ 图标(img403) |
| `Layer420_CheckFree.prefab` | CheckFree_Layer (420) | 7 | 确认解散弹窗(单 group-36):全屏遮罩(img11)+ 背景(img41 九宫格 55/45/55/45)+ 底(img42 九宫格 53/48/53/48)+ 关闭(img33)+ 确认/取消(img179 帧1/2)+ 文本 |
| `Layer408_Interact.prefab` | Interact_Layer (408) | 21 | 互动动画层(双 group):group-21 遮罩(img10 2×2)+ group-39 互动动画×20(img99 帧1×5 / img102 帧1×5 / img103 帧1×5 / img104 帧1×5) |
| `Layer409_ChatVoice.prefab` | Chat_Voice_Layer (409) | 20 | 语音聊天(单 group-76):语音气泡×10(img83 九宫格 30/20/30/20)+ 语音动画×10(img100 帧1) |
| `Layer410_ChatText.prefab` | Chat_Text_Layer (410) | 20 | 文字聊天(单 group-75):聊天气泡×10(img83 九宫格 30/20/30/20)+ 文本×10(fs=14 白色,动态) |
| `Layer413_BtnPanel.prefab` | btnPannelLayer (413) | 18 | 按钮面板(四 group):group-21 图标(img377)+ group-99 按钮×7(img238 帧1~7)+ 侧边(img378 九宫格 1/1/1/1)+ 底(img10 九宫格 1/1/1/1)+ group-100 大背景(img379 九宫格 90/90/90/90 / img10 九宫格 1/1/1/1)+ 图标(img205)+ 文本×2 + group-81 输入框(img402 九宫格 20/50/20/10)+ 图标(img401)+ 文本 |
| `Layer416_PlayerInfo.prefab` | MainScene_PlayerInfo_Layer (416) | 16 | 玩家信息(双 group):group-77 遮罩(img11)+ 背景(img54 九宫格 70/70/70/70)+ 头像(img25)+ 文本×5(动态)+ group-38 表情图标×8(img105 九宫格 20/20/20/20) |
| `Layer418_ChatPannel.prefab` | ChatPannel_Layer (418) | 54 | 聊天面板(单 group-30):遮罩 + 聊天背景/底 + 常用语/表情 tab + 常用语×7 + 表情×20 + 历史记录/系统公告区域 + 输入框/发送按钮;48 Sprite + 6 Label |
| `Layer202_PlayerHeadScore.prefab` | Player_Head_Score_Layer (202) | 60 | 玩家头像分数层(11 group):group-43~52 玩家座位×10(九宫格底 img76 45/45/45/45 + 头像 img116~125 + 昵称/积分 Label fs14 #FFCB5C)+ group-73 表情×10(表情底 img146 + 表情 img147 帧1) |
### 图片映射(ImageFileID → spriteFrame UUID)
| ImageFileID | bmp | 图片实际尺寸 | 用途 | spriteFrame UUID |
|---|---|---|---|---|
| 11 | 00011.png | 4×4(拉伸) | 全屏遮罩(Layer16 Spirit362 / Layer22 Spirit72 / Layer24 Spirit3005 / Layer12 Spirit49 等共用 + Layer420 Spirit242 确认解散遮罩拉伸 1600×720) | `eabf148a-fa6a-460a-be4f-8e586eb80e07@f9941` |
| 108 | 00108.png | 100×100 | 载入动画 | `e966950a-fe3c-41d9-adcb-b8950fb77ae1@f9941` |
| 87 | 00087.png | 570×105 | 强制下线提示底(Layer616)+ 主场景顶部横幅(Layer404 Spirit657 拉伸 570×60) | `c6295419-a30e-4e88-b7d7-d4099114319d@f9941` |
| 31 | 00031.png | 91×91 | Spirit465 | `8e3905be-b629-4c4d-858b-b8a76e9f7752@f9941` |
| 54 | 00054.png | 454×207 | 掉线背景(Layer615 原始尺寸)+ 充值提示背景(Layer11 原始尺寸)+ 九宫格背景(Layer17 个人信息背景 592×402 边框 70/70/70/70;Layer2 边框 100/80/100/80;Layer416 边框 70/70/70/70)⚠️ 同图多边框,spriteFrame border 只能一套,延后 | `4b04584c-c0f4-4586-8be7-05b0adca4157@f9941` |
| 97 | 00097_*.png(8 帧) | 64×64 | 重连动画(多帧) | 帧 1 = `5690de47-2417-4e4c-b948-b772697cd010@f9941` |
| 98 | 00098.png | 171×28 | 重连文字(Sprite,非文本) | `837b6d75-1a66-40a0-8b7a-42dae7146c2a@f9941` |
| 41 | 00041.png | 115×94(九宫格) | 协议背景(边框 55/45/55/45)+ 绑定背景(Layer16 Spirit363,同边框)+ 确认解散背景(Layer420 Spirit243 拉伸 637×212,同边框) | `3e7492cb-7ae1-4f56-806d-07096662d8fb@f9941` |
| 95 | 00095.png | 729×997 | 协议内容(滚动长图) | `998850c4-7861-4c12-8cb4-be7a7415c42a@f9941` |
| 33 | 00033.png | 83×84(trim 后 81×81) | 关闭按钮(Layer13 Spirit61 战绩关闭按钮 + Layer24 Spirit3011 邻居关闭按钮 + Layer29 Spirit3251 手机验证关闭 + Layer25 Spirit97 仓库关闭 + Layer420 Spirit247 关闭解散确认) | `eedce6d7-3ea6-434c-83e1-87d9a04b2bad@f9941` |
| 10 | 00010.png | 166×68(拉伸) | 遮罩(Layer612 + Layer620 共用,异于通用遮罩 00011)+ 更多面板遮罩(Layer8 Spirit3122 拉伸 1280×720 隐藏)+ 微信公众号按钮底(Layer4 Spirit339,拉伸 166×40)+ 房间卡片图标(Layer19 Spirit522 拉伸 100×100 / Spirit523 拉伸 50×50)+ 战绩图标(Layer13 Spirit85/84 拉伸 195×68)+ 战绩页底/前景(Layer12 Spirit50/52/63/57/56/87 拉伸 1073×100/800×200/300×100)+ 白名单内容底(Layer29 Spirit3272 拉伸 550×301 / Spirit3273 拉伸 626×142 隐藏)+ 任务前景/侧边(Layer26 Spirit119 拉伸 1250×650 / Spirit176 拉伸 166×453)+ 高级选项侧边(Layer28 Spirit611 拉伸 100×508) | `dcc4530b-344b-40b6-8fbb-9fa35db6a289@f9941` |
| 249 | 00249.png | 100×100(九宫格) | 提示九宫格按钮(边框 40/40/40/40) | `b44cf3e4-ec84-4208-a68f-ec5e30ecd593@f9941` |
| 380 | 00380_*.png(6 帧) | 65×174 | 记录动画(多帧,帧 1 落盘) | 帧 1 = `1305d4c3-fc5b-4873-8ec4-e619f7514692@f9941` |
| 381 | 00381.png | 351×359 | 记录背景 | `31eeca1a-3b00-4b66-b2c1-0d647d6c821c@f9941` |
| 237 | 00237.png | 1280×720 | 全屏背景(Layer618) | `a2c1c399-c7f2-47f6-9bed-99ecaa4b1413@f9941` |
| 439 | 00439_*.png(3 帧) | 132×156 | 双帧图标(Layer603 用帧 1/2) | 帧 1 = `b28d677c-314c-40be-b675-1d8e3194a8b6@f9941`,帧 2 = `1c34b82d-4a41-477d-8db6-5a8e391a323b@f9941` |
| 109 | 00109.png | 96×91(拉伸) | 通知横幅背景(1280×85) | `1c5e45ef-2726-4696-a688-47792b5f2dd6@f9941` |
| 110 | 00110.png | 57×42 | 通知图标 | `45de5613-373d-4860-973d-3f6f47489d30@f9941` |
| 111 | 00111.png | 33×37 | 通知关闭按钮 | `efd5ab89-8516-4d0b-86c4-4b374631dd4b@f9941` |
| 405 | 00405.png | 100×100(拉伸) | Layer601 全屏遮罩背景(9-slice 零边距) | `c6516e94-fd75-4ab6-8457-a3eefd850e64@f9941` |
| 406 | 00406.png | 145×74 | Layer601 右侧按钮(上) | `f3f55138-8c91-449c-a6dd-a7c444be894e@f9941` |
| 409 | 00409.png | 145×74 | Layer601 右侧按钮(下) | `deb92933-a377-4da4-9509-be856614e026@f9941` |
| 2 | 00002.png | 597×446(九宫格) | 弹窗背景(Layer608 边框 250/200/346/245、Layer609 设置背景 边框 100/134/100/135、Layer21 排行榜背景 1100×692 边框 55/45/55/45、Layer29 手机验证背景 577×406 边框 90/90/90/90、Layer26 任务背景 Spirit113 边框 250/200/346/245;⚠️ 多 Layer 以 5 组边距共享) | `8eb7acc3-aba1-4fcf-b375-a3bfb5303472@f9941` |
| 6 | 00006_*.png(5 帧) | 403×76 | 多帧 sprite(Layer608 Spirit693 用帧 4 / Layer12 Spirit689 用帧 1 / Layer9 Spirit692 用帧 3 / Layer26 Spirit690 用帧 2) | 帧 1 = `e72b79a6-2b3b-434e-b3af-9bed6261b043@f9941`,帧 2 = `2125cf5c-a0a4-4f34-a78a-88dfb3c100e3@f9941`,帧 3 = `5febca8f-13b3-4ea3-997c-0f4534ba499d@f9941`,帧 4 = `317bd27a-1b89-4653-9949-e9bfb980e998@f9941` |
| 40 | 00040.png | 510×138 | 帮助标题 + 战绩标题(Layer12 Spirit70)+ 任务标题(Layer26 Spirit114) | `05398908-866f-4605-b419-4a06ef63248a@f9941` |
| 101 | 00101.png | 729×1122 | 帮助内容(滚动长图) | `bb84a2a5-ac9d-4227-8934-79a4aa7429a0@f9941` |
| 29 | 00029_*.png(4 帧) | 206×75 | 音乐/音效图标 + Spirit356/387(Layer609 用帧 1/2/3/4) | 帧 1 = `9239dc9e-f89e-40c4-ba76-b004e1fd5ec4@f9941`,帧 2 = `9ee042b7-fb9f-481e-b97f-5ce7da732655@f9941`,帧 3 = `f40aef7e-d2b4-440c-b3bc-b5c194a7b037@f9941`,帧 4 = `6be9d68d-5d12-43ae-84f5-112d0cf265a8@f9941` |
| 30 | 00030_*.png(2 帧) | 170×60 | 音乐/音效底 + Spirit357/388(Layer609 用帧 1;Spirit388 帧 3 循环回绕帧 1) | 帧 1 = `0660c388-fd83-4994-a5a7-e97a7580491a@f9941` |
| 48 | 00048.png | 181×70(拉伸到 250×90) | 设置标题 + 分享标题(Layer22 Spirit73 拉伸 200×80) | `7c8eca87-fcd8-4f1a-a182-276629c8b0d8@f9941` |
| 52 | 00052.png | 403×76 | Spirit688(设置说明图) | `d22e8d18-b67b-4fa6-b194-171ac4e217c5@f9941` |
| 178 | 00178_*.png(5 帧) | 280×93 | 退出登录(帧 5)+ 申请解散(帧 1)+ 邀请好友(帧 2) | 帧 1 = `f639fcfd-2c07-429b-b8a9-0876c12e3d60@f9941`,帧 2 = `003dd305-c6df-4bb4-93b0-40d802913fea@f9941`,帧 5 = `105a605a-c322-40e8-b278-a23d34b8e46a@f9941` |
| 188 | 00188_*.png(2 帧) | 135×80 | 删除键(Layer602 用帧 2)+ 绑定按钮(Layer16 Spirit366 帧 2 / Spirit367 帧 1)+ 白名单图标(Layer29 Spirit3289 用帧 1,渲染 80×60) | 帧 1 = `191af9ac-92cf-4163-b9b1-581298293607@f9941`,帧 2 = `5209df7b-725d-4610-be70-cf2c4e536c95@f9941` |
| 239 | 00239.png | 137×86(九宫格) | 输入框背景(边框 60/40/60/40,Layer602) | `32739fb1-0933-4e45-9111-4f56ee4f2957@f9941` |
| 241 | 00241_*.png(12 帧) | 333×110 | 数字键盘 12 键(Layer602,帧 1~12 全用) | 帧 1 = `237c724e-4214-451d-a549-f14d649aea16@f9941`,帧 2 = `c4fc1e99-2f5b-4e92-bd99-40d510b9886d@f9941`,帧 3 = `40c89d11-4a05-4ae3-a9db-fd44575091de@f9941`,帧 4 = `1ed1717f-1307-4c91-9f6f-8ddb486c9676@f9941`,帧 5 = `ca157e80-82e2-4075-9b9a-d091fb52ea58@f9941`,帧 6 = `2dac5ee2-752f-4fad-b805-492bc9f68cb9@f9941`,帧 7 = `b5d46f14-24de-4518-9bd1-14802c02ab6e@f9941`,帧 8 = `2ff18c2d-a547-4edf-89c3-bed4ed3f758d@f9941`,帧 9 = `551ad91e-9030-4580-9ee4-80b8ccf9c5bf@f9941`,帧 10 = `415a30af-6b20-4e00-85e7-cb183f63024e@f9941`,帧 11 = `8f77b555-c1c5-4461-964d-11661736613a@f9941`,帧 12 = `27d606ff-dc5a-4ebf-a865-79c37cf9b6c4@f9941` |
| 242 | 00242_*.png(10 帧) | 51×65 | 光标(Layer602 用帧 1) | 帧 1 = `52d93534-329f-4e48-a2c4-b06e5b291250@f9941` |
| 42 | 00042.png | 108×98(九宫格) | 投票底(边框 53/48/53/48,Layer606)+ 排行榜列表底(Layer21 Spirit607 465×511,同边框)+ 确认底(Layer420 Spirit244 拉伸 550×120,同边框) | `34daf5f4-3869-4f71-84c4-d09103701be6@f9941` |
| 180 | 00180_*.png(2 帧) | 157×74 | 同意(帧 1)/ 拒绝(帧 2)(Layer606) | 帧 1 = `c3e076d4-8d0d-4992-bd87-02c05afc9758@f9941`,帧 2 = `50fe4e5c-bdcc-4c1b-b7fc-b44c748c10f3@f9941` |
| 89 | 00089.png | 125×33 | Spirit358(Layer606,帧 2 循环回绕帧 1,`frame_all=1`) | `b7e97f28-26b3-4739-8dc1-4542a42a5d41@f9941` |
| 46 | 00046_*.png(10 帧) | 30×30 | 投票倒计时(FrameText,Layer606 用帧 1) | 帧 1 = `f3f3eadc-4916-4192-af76-8a3a0e2d01d7@f9941` |
| 34 | 00034_*.png(2 帧) | 292×102 | 确认键(Layer606 用帧 1)+ 战绩页一返回(Layer12 Spirit53 用帧 2)+ 手机验证确认(Layer29 Spirit3253 用帧 1)+ 仓库确认键(Layer25 Spirit3043 用帧 1) | 帧 1 = `c8cc3782-42f9-4e2d-9898-da1460faff26@f9941`,帧 2 = `65ec6a90-8980-4ba2-9e86-e36d4901b4bf@f9941` |
| 185 | 00185.png | 260×84(九宫格) | 计算器输入框(边框 153/0/50/0,Layer607) | `1147e0c6-bf4a-42f9-bdcd-bcbd76ac5dc0@f9941` |
| 198 | 00198_*.png(11 帧) | 28×37 | 光标(FrameText,Layer607 用帧 1) | 帧 1 = `1594ca3e-9a00-4f8d-bba0-da2e20acaeda@f9941` |
| 184 | 00184.png | 309×110 | 计算器标题(Layer607) | `f2db27eb-1a8d-4c9a-a72f-0b1af6d4d1a2@f9941` |
| 183 | 00183_*.png(11 帧) | 36×47 | 光标(FrameText,Layer607 用帧 1) | 帧 1 = `13820b69-2f97-4e52-b206-f5621a968124@f9941` |
| 186 | 00186.png | 122×68 | 计算器关闭按钮(Layer607) | `04de2ca1-1b00-486f-8129-db573b1248bb@f9941` |
| 182 | 00182_*.png(12 帧) | 131×77 | 计算器 12 键(Layer607,帧 1~12 全用) | 帧 1 = `4e168ad5-3a26-4177-911b-e604fa849e5a@f9941`,帧 2 = `1a41c053-acd6-421d-81ff-f3387006c570@f9941`,帧 3 = `29bf5095-eb18-4b7b-9c70-063302e92990@f9941`,帧 4 = `a3f70c6d-44e6-448f-bfbf-9737f7cf9612@f9941`,帧 5 = `6c1728ad-2e14-4c88-bf32-054f34fdf60c@f9941`,帧 6 = `97850373-3f4f-47cf-b6fd-dbb258ba6cf6@f9941`,帧 7 = `40f17d6f-b2e0-4fc0-9ec5-4b59f85cc365@f9941`,帧 8 = `b4f5ea35-a601-4eb0-9bfd-4a6af77709a1@f9941`,帧 9 = `817fd57b-626c-431a-9994-d712bcd85d61@f9941`,帧 10 = `8713bdc5-c206-468e-b046-f1ef7eb2c82b@f9941`,帧 11 = `5a3ae2e3-e4bf-4baa-bf5e-f455b97baf79@f9941`,帧 12 = `12a81ba0-2e16-4c3e-a37e-7550ff2939fc@f9941` |
| 1 | 00001.png | 1280×720 | 主界面全屏背景(Layer4 Spirit4,拉伸 1600×720) | `a8236f97-043b-4548-b529-dc465b31e810@f9941` |
| 12 | 00012.png | 298×334 | 创建房间按钮(Layer4 Spirit11) | `a3b75089-6fdc-48de-8f73-3b05b52e0dd6@f9941` |
| 14 | 00014_*.png(12 帧,3×4) | 150×70 | 底部 tab 按钮(Layer4:帧 1=更多/2=分享/3=任务/4=战绩/11=设置)+ 更多面板按钮(Layer8:帧 5=背包/6=仓库/7=反馈/8=排行榜/9=绑定/10=通知) | 帧 1 = `04f4d29d-861f-4b46-930a-baf544a80b1b@f9941`,帧 2 = `467e62c4-8587-4aa5-8d02-fc0ba8e82cf6@f9941`,帧 3 = `3a6b2c60-b8ba-4ad9-ba7f-6d9e620c789e@f9941`,帧 4 = `57e8e036-825a-4221-98ec-8f1540f8aa42@f9941`,帧 5 = `d504c257-926d-4bbb-a6a5-b8bf258b735b@f9941`,帧 6 = `bcef0a07-e08a-4ee5-939b-1b94ae45966c@f9941`,帧 7 = `096cee7a-e1a6-440a-aac3-8c2170449f6c@f9941`,帧 8 = `42f9d0a7-3f98-49a8-aeef-807b33a5941a@f9941`,帧 9 = `75786e98-cc06-4eb5-ba69-fe31b5107423@f9941`,帧 10 = `fe562996-c836-4a5b-a381-7bd973bfdaf5@f9941`,帧 11 = `434102b8-7714-44cd-a65d-898672a7e8ad@f9941` |
| 15 | 00015.png | 46×195 | 房间列表按钮(Layer4 Spirit99) | `e3425723-dfe9-427b-9d0d-736267823cf8@f9941` |
| 59 | 00059.png | 337×441 | Spirit679 大厅主视觉(Layer4) | `4f725497-383a-4e19-bc2c-4fd55017042b@f9941` |
| 199 | 00199.png | 328×224 | 比赛场按钮(Layer4 Spirit483) | `b4250870-2a5b-4953-a7b8-57abdd576b7d@f9941` |
| 214 | 00214.png | 329×224 | 星星场平台按钮(Layer4 Spirit568) | `b8eeb06c-6ed2-4952-ba97-c229852b2ea5@f9941` |
| 232 | 00232.png | 185×80 | 加入房间按钮(Layer4 Spirit12,拉伸 203×86) | `5e1f37f2-4852-402a-81bb-1827c638aa7e@f9941` |
| 245 | 00245.png | 258×21 | 广告(9-slice 边框 1/1/1/1,Layer4 Spirit16) | `f76d6d83-942a-4511-abdd-b12e14aba51d@f9941` |
| 248 | 00248.png | 932×39 | 公告底(Layer4 Spirit219,缩放 645×39) | `df4db047-ac71-4afd-b73d-e608abadc355@f9941` |
| 252 | 00252.png | 160×100 | 商城按钮(Layer4 Spirit3016) | `c80ee17e-0a97-453f-a5d5-98e42de7eddd@f9941` |
| 253 | 00253.png | 94×99 | 福袋按钮(Layer4 Spirit3018) | `a8b9e254-a96b-4a06-a8df-05baeeaaf839@f9941` |
| 348 | 00348.png | 80×80 | 更多按钮(Layer4 Spirit234) | `79283b71-19ab-46d1-bd7f-d68e297f6047@f9941` |
| 350 | 00350_*.png(2 帧) | 55×50 | Spirit479 图标(Layer4 用帧 1) | 帧 1 = `151439f3-c9bd-4fb2-97b5-5afc295d76e8@f9941` |
| 351 | 00351.png | 175×118 | 二维码(Layer4 Spirit76) | `5d8d62a3-d292-42f9-a589-c30e491d5f2f@f9941` |
| 396 | 00396.png | 298×113 | Spirit3139 主按钮(Layer4,无名称) | `5b2a27a3-fd0f-44b5-812b-21b2f69455ac@f9941` |
| 66 | 00066.png | 1280×720 | 游戏主界面背景(Layer50 Spirit149,拉伸 1600×720) | `e1aa83b5-47de-4593-997d-debc3ceb2557@f9941` |
| 67 | 00067.png | 247×62 | 顶部横幅(9-slice 边框 20/20/50/20,Layer50 Spirit284) | `64bfd3fc-4394-4c36-a9c2-aa7d3f50c5c7@f9941` |
| 69 | 00069_*.png(10 帧,10×1) | 15×20 | 时钟数字 0-9(Layer50 Spirit154/155 用帧 1) | 帧 1 = `55fc2d29-a269-4025-b25a-afe69d92d238@f9941` |
| 70 | 00070.png | 5×14 | 时钟冒号(Layer50 Spirit156) | `7d193c00-a7ee-4d75-956c-8dd6f6300b56@f9941` |
| 112 | 00112_*.png(3 帧) | 49×19 | 电量图标(Layer50 Spirit337/338 用帧 1) | 帧 1 = `7e671255-a374-47e4-9264-fde41226b020@f9941` |
| 113 | 00113_*.png(4 帧) | 29×22 | wifi 图标(Layer50 Spirit336 用帧 1) | 帧 1 = `1ef090dc-6a2b-4a1d-b99a-8f84f04e0aa6@f9941` |
| 398 | 00398_*.png(10 帧,10×1) | 17×21 | 数字 0-9(Layer50 Spirit3141 用帧 1 + Layer411 Spirit3146 房号数字用帧 1) | 帧 1 = `7d88dcff-d1ce-4a0a-b24f-2f861d94b613@f9941` |
| 399 | 00399.png | 59×25 | Spirit3142(Layer50)+ 房号 tag(Layer411 Spirit3147) | `13a32880-9854-4d79-b292-6cf00516d88c@f9941` |
| 8 | 00008.png | 476×103 | 房间号显示底(Layer15 Spirit28,渲染 465×103) | `2e036f97-2543-4962-b1a7-197acd74c161@f9941` |
| 9 | 00009_*.png(12 帧,3×4) | 186×82 | 加入房间数字键盘 12 键(Layer15:帧 1-9=数字 1-9、帧 10=重输、帧 11=0、帧 12=删除) | 帧 1 = `560b4ba0-8b4c-4522-a8c7-d39411d13a8e@f9941`,帧 2 = `b2e04f1b-2798-4bbf-a869-5ca6d101d69a@f9941`,帧 3 = `db239522-6c9b-45dd-b638-bedaabe0d0f7@f9941`,帧 4 = `029880e7-2a18-47b5-b89f-2ceb720035da@f9941`,帧 5 = `2c46f8bd-b111-4ddb-ae01-f409b8fe8c12@f9941`,帧 6 = `1efdc1ea-8de7-437e-a301-ac3362a1f0a4@f9941`,帧 7 = `c468fa1f-6aa7-45cf-aaf6-f7caf3cb52e7@f9941`,帧 8 = `5153e2e5-0bfd-44e6-a9c2-d764c22e211b@f9941`,帧 9 = `2c464751-e90c-4e73-a778-389045ec716b@f9941`,帧 10 = `bbd7edb3-32a3-4319-83ac-8289a5f072f1@f9941`,帧 11 = `dcdbc60a-c3a1-469e-96be-3871b238f058@f9941`,帧 12 = `baac739a-5e04-486c-8b5d-e11e9e370bcc@f9941` |
| 28 | 00028_*.png(2 帧,1×2) | 403×76 | Spirit687(Layer15 用帧 2)+ Spirit686(Layer27 用帧 1) | 帧 1 = `ac673006-0a0e-446c-a082-5b43f0fa4c60@f9941`,帧 2 = `b64f27f7-869d-4847-9738-6fd504cef161@f9941` |
| 373 | 00373.png | 234×78 | Spirit602(Layer15,单帧;源 Frame=3 但 frame_all=1 循环回绕帧 1) | `73527749-e32e-424f-97c8-49d8449a74b3@f9941` |
| 254 | 00254.png | 1280×720(九宫格) | 房间列表全屏背景(Layer19 Spirit517,边框 200/134/200/135) | `a31fecc3-643f-4040-b094-bebfe256da62@f9941` |
| 211 | 00211_*.png(5 帧) | 182×50 | 房间列表标题(Layer19 Spirit518 用帧 1) | 帧 1 = `135076af-2311-4615-bc27-30fc11ea541b@f9941` |
| 259 | 00259.png | 59×51 | 关闭/返回图标(Layer19 Spirit519)+ 关闭图标(Layer6 Spirit3182) | `3ce98bad-65ed-4209-b389-9bcc36e3b392@f9941` |
| 213 | 00213.png | 104×47 | 刷新按钮(Layer19 Spirit520) | `612b277e-2c7a-4819-9b0a-723b5d73dbcd@f9941` |
| 257 | 00257_*.png(2 帧) | 201×67 | 列表按钮(Layer19 Spirit521 帧 1 / Spirit3019 帧 2) | 帧 1 = `a041ddc3-f3d7-4b35-a721-f5e4de823ea6@f9941`,帧 2 = `5600806d-113a-483e-9d46-a95a56f8e7bf@f9941` |
| 212 | 00212_*.png(4 帧) | 398×261 | 房间卡片底(Layer19 Spirit524 用帧 1) | 帧 1 = `49c6b009-37e6-4415-a967-38a12fe88626@f9941` |
| 210 | 00210.png | 208×43 | 列表头背景(Layer19 Spirit566/567)+ 高级选项下方按钮(Layer28 Spirit623 九宫格 103/20/103/20) | `084eb6ca-3730-48e6-8dbe-67c39cdbe5e5@f9941` |
| 255 | 00255.png | 900×151 | 房间卡片横幅(Layer19 Spirit525,源 Frame=2 回绕帧 1) | `b54e832d-3ed3-4162-9837-83e00b109ce8@f9941` |
| 260 | 00260.png | 32×27 | 小图标(Layer19 Spirit3026,源 Frame=2 回绕帧 1) | `c40c91dc-bfe8-4281-96de-b6da5bdfa97b@f9941` |
| 261 | 00261_*.png(2 帧) | 21×22 | 小图标(Layer19 Spirit3027 用帧 2) | 帧 2 = `823769bd-34cc-4340-9ce0-bfe30d69a543@f9941` |
| 258 | 00258_*.png(10 帧) | 16×19 | 数字 0-9(Layer19 Spirit3028 FrameText=8) | 帧 8 = `3a6cb966-f91b-47d5-a937-b893679a39b9@f9941` |
| 358 | 00358_*.png(4 帧) | 210×80 | 列表按钮(Layer19 Spirit92 帧 1 / Spirit93 帧 4) | 帧 1 = `5d57263e-75f2-444d-bf24-42f53cf745ab@f9941`,帧 4 = `f2ac27a0-f993-4b6e-ae9f-b3fbc1e3d319@f9941` |
| 360 | 00360.png | 216×71 | 房间卡片按钮(Layer19 Spirit94) | `a5258649-4472-4b1a-a003-bdd4d0bd60b6@f9941` |
| 359 | 00359_*.png(10 帧) | 25×34 | 房间号数字(Layer19 Spirit95 FrameText=1) | 帧 1 = `8ef599cb-b532-49d5-a4ea-b67a5df2124f@f9941` |
| 361 | 00361.png | 206×74 | 房间卡片按钮(Layer19 Spirit96) | `419d5a22-c81b-4fc2-92c4-be41246ed616@f9941` |
| 3 | 00003.png | 50×50 | 创建房间选择按钮(Layer27:局数×2 / 下注上限×3 / 玩法×2,7 处共用) | `4b924bd2-6ccf-40d7-95b2-cfa58e897913@f9941` |
| 27 | 00027_*.png(3 帧,1×3) | 134×37 | 创建房间选项标签(Layer27 Spirit678 帧 2 / Spirit677 帧 3) | 帧 2 = `a1c2c7c1-b8e4-4137-8af9-aa7122a8c0bb@f9941`,帧 3 = `6ea3afac-35d9-45f2-8b6e-1ea991bad826@f9941` |
| 354 | 00354.png | 123×43 | 战绩返回按钮(Layer13 Spirit55) | `f9208601-2eba-4665-b711-0030f82c1a7c@f9941` |
| 65 | 00065_*.png(2 帧,2×1) | 33×41 | 分页箭头(Layer13 Spirit104 帧 1 / Spirit105 帧 2) | 帧 1 = `690f9f06-422a-4a49-a1d5-d0a3110cc050@f9941`,帧 2 = `a08dd099-bb42-4d3b-8bdc-728e53444111@f9941` |
| 345 | 00345.png | 725×482(九宫格) | 分享背景(Layer22 Spirit71,边框 313/134/313/135) | `6e345900-07a7-4e0a-b6c6-ec66e5072752@f9941` |
| 50 | 00050.png | 264×80 | Spirit691(Layer22 单帧) | `5f783910-7fd0-4482-a206-8dcb57238c74@f9941` |
| 51 | 00051_*.png(2 帧,2×1) | 200×192 | 分享按钮(Layer22 Spirit74 微信好友 帧 1 / Spirit75 朋友圈 帧 2) | 帧 1 = `4d5894ca-8968-4834-a7fa-d97c530a1ab3@f9941`,帧 2 = `5b77563f-daa5-466d-8a74-5291a2086f66@f9941` |
| 187 | 00187.png | 185×73 | Spirit364(Layer16 单帧) | `b6fe5054-293c-42d4-babc-41d324a5c860@f9941` |
| 243 | 00243.png | 1002×702(九宫格零边距) | 邻居背景(Layer24 Spirit3006,边框 0/0/0/0) | `ee70b3e9-dd24-4f32-b3f2-59def4ece28e@f9941` |
| 244 | 00244.png | 215×69 | 邻居项按钮(Layer24 Spirit3007~3010,4 处共用;SpiritType=3 但 frame_all=1 单帧) | `dcefb181-bf8f-4a03-9b5c-441b425d8e30@f9941` |
| 347 | 00347.png | 690×115(九宫格) | 按钮托盘(Layer8 Spirit3121,边框 70/50/30/50,拉伸 146×115) | `187be0e6-88c3-4873-8eaf-a5e9740b78d0@f9941` |
| 201 | 00201_*.png(2 帧) | 149×30 | 授权选项按钮(Layer18 Spirit487 帧 1 / Spirit488 帧 2) | 帧 1 = `6ec71a03-56ee-4541-9fd0-2c1200348b43@f9941`,帧 2 = `e51cd6f4-43a6-46ab-a988-3cf7d94cebe8@f9941` |
| 202 | 00202.png | 157×74 | 授权主按钮(Layer18 Spirit493,单帧) | `7467964f-393f-48d6-b835-9e38af944e08@f9941` |
| 25 | 00025.png | 93×93 | 头像(Layer17 Spirit118,拉伸 105×103)+ 玩家头像(Layer6 Spirit8,渲染 63×65)+ 玩家信息头像(Layer416 Spirit282,渲染 105×103) | `60da43f5-f3c2-4b9f-9123-fad81f8f8af5@f9941` |
| 200 | 00200.png | 150×49 | 玩家信息按钮(Layer17 Spirit484,单帧) | `26e33ced-f227-4a53-997e-5c7bd876595a@f9941` |
| 407 | 00407.png | 354×67(九宫格) | 个性签名底(Layer17 Spirit3156,边框 20/20/20/20,拉伸 391×79)+ 手机验证输入框(Layer29 Spirit3243/3244,边框 150/25/150/25,拉伸 424×61 / 279×61)⚠️ 同图多边框,spriteFrame border 只能一套,延后 | `92947828-edaa-4341-ac48-dfe33d934d5f@f9941` |
| 235 | 00235.png | 2×565 | 竖线分隔(Layer21 Spirit608,排行榜列表左右分隔线) | `2c1a10fe-291d-48a4-a6ff-edf7de01a07f@f9941` |
| 234 | 00234.png | 420×87(九宫格) | 排行榜底部栏(Layer21 Spirit610,边框 200/43/200/43,拉伸 420×87) | `fe744ec6-7245-428f-aa0e-b88e9c2bb60f@f9941` |
| 233 | 00233_*.png(3 帧) | 88×93 | 排行榜箭头(Layer21 Spirit629 用帧 1) | 帧 1 = `fb86ab44-8140-4d8e-82f1-84ae4b8f3216@f9941` |
| 116 | 00116.png | 93×93 | 排行榜头像框(Layer21 Spirit630 拉伸 65×65 / Spirit634 拉伸 105×105)+ 玩家头像(Layer202 Spirit376 渲染 93×93) | `0c7ab485-8adf-432e-8dfb-27dff1dde280@f9941` |
| 106 | 00106.png | 137×138 | 排行榜奖杯/名次图标(Layer21 Spirit631 拉伸 80×80) | `b6310388-a682-483c-9d39-17c8876f0b49@f9941` |
| 24 | 00024.png | 70×72 | 排行榜装饰(Layer21 Spirit635)+ 玩家头像框(Layer6 Spirit9,渲染 70×72) | `7863c037-341e-47a9-a00f-133597728429@f9941` |
| 204 | 00204_*.png(5 帧) | 44×40 | 排行榜小图标(Layer21 Spirit639 用帧 1)+ 牌桌图标(Layer6 Spirit508 用帧 1,渲染 44×40)+ 仓库图标(Layer25 Spirit3032/3077 用帧 1) | 帧 1 = `6b9ad554-bf4a-4493-82dd-92b4328cb8a4@f9941` |
| 425 | 00425_*.png(2 帧) | 403×76 | 排行榜标题(Layer21 Spirit3234 用帧 1) | 帧 1 = `97b4bd7f-8716-497f-a375-d9c841cf34e9@f9941` |
| 353 | 00353.png | 1231×692(九宫格) | 战绩背景(Layer12 Spirit48,边框 250/200/346/245) | `064548fb-6849-4425-8ecb-255faa57860a@f9941` |
| 171 | 00171.png | 106×26 | 战绩装饰(Layer12 Spirit683) | `372dab1a-5549-4301-9dbf-480c4e57958b@f9941` |
| 172 | 00172_*.png(10 帧) | 14×22 | 战绩装饰(Layer12 Spirit684 用帧 1) | 帧 1 = `eaf82c8a-35f9-4c5c-8dba-3e06cabf692f@f9941` |
| 23 | 00023.png | 1152×158 | 战绩横条(Layer12 Spirit64/88) | `27ec9c8a-8bf8-4546-ab2b-d1a0520f14b2@f9941` |
| 35 | 00035_*.png(2 帧) | 70×141 | 详情/查牌(Layer12 Spirit51 详情1 帧 1 / Spirit54 查牌 帧 2) | 帧 1 = `ecfcc3d2-d110-48d3-9f3f-f8bf8ac92a4b@f9941`,帧 2 = `d1f31383-61d3-4be3-ac6b-e8b1071dd1ba@f9941` |
| 357 | 00357_*.png(2 帧) | 576×77 | 战绩装饰(Layer12 Spirit83 用帧 1) | 帧 1 = `f9adb6d0-4478-452a-b7c8-21e4671ecbb5@f9941` |
| 356 | 00356.png | 697×2 | 战绩分隔线(Layer12 Spirit86/91) | `c31c03c5-c95f-4b49-a083-c6be357c83ac@f9941` |
| 355 | 00355_*.png(2 帧) | 289×26 | 战绩装饰(Layer12 Spirit82 用帧 1) | 帧 1 = `99f3ce26-968b-4672-aa0f-c45ae5000884@f9941` |
| 411 | 00411.png | 182×188(九宫格) | 二维码弹窗背景(Layer7 Spirit3201/3219,边框 90/90/90/90)+ 白名单背景(Layer29 Spirit3271,边框 90/90/90/90,拉伸 591×621) | `51c575a7-4a16-4cc7-8546-26e0c69a8010@f9941` |
| 412 | 00412.png | 201×49(九宫格) | 二维码标题(Layer7 Spirit3205,边框 95/20/95/20)+ 白名单按钮(Layer29 Spirit3275/3282/3287,边框 95/20/95/20,拉伸 173×49 / 193×49 / 266×49) | `0ca224e1-4160-4038-bec8-2d57a9beefdf@f9941` |
| 413 | 00413_*.png(2 帧) | 79×41 | 二维码按钮(Layer7 Spirit3206 帧 2 / Spirit3208 帧 1 / Spirit3216 帧 1)+ 白名单按钮(Layer29 Spirit3278 帧 1 / Spirit3281 帧 1) | 帧 1 = `940bbbba-8104-422a-ad35-6f5bc890e59d@f9941`,帧 2 = `b6ea7c41-3ce3-42ed-b425-06839fd0c1ec@f9941` |
| 414 | 00414_*.png(2 帧) | 78×26 | 二维码标题小字(Layer7 Spirit3202 用帧 1) | 帧 1 = `0b495d59-5e7c-42b1-a85d-deb232a6fcc9@f9941`,帧 2 = `72bc59c9-e2b8-47b3-8ced-50386649b37b@f9941` |
| 415 | 00415.png | 100×100 | 二维码关闭按钮(Layer7 Spirit3203/3222)+ 白名单关闭(Layer29 Spirit3274) | `fe285a2f-1f82-4c45-ac59-b596f952b47b@f9941` |
| 416 | 00416.png | 403×55 | 二维码内容底(Layer7 Spirit3210) | `154011e6-f360-44c3-9c7e-a5c532f5ee1f@f9941` |
| 417 | 00417_*.png(13 帧) | 25×36 | 二维码帧动画(Layer7 Spirit3228 用帧 1) | 帧 1 = `0c2d691f-0c5f-4147-811a-badd8fc14dfd@f9941` |
| 419 | 00419.png | 120×60(九宫格) | 二维码底/列表(Layer7 Spirit3207/3223,边框 55/20/55/20)+ 白名单底(Layer29 Spirit3277,边框 55/20/55/20,拉伸 521×49) | `050eaa6d-bc43-4c44-a8fc-3cacf8aa5e50@f9941` |
| 420 | 00420.png | 120×60(九宫格) | 二维码底/列表(Layer7 Spirit3225,边框 55/20/55/20) | `9222540c-8344-4c62-85f0-252d24510081@f9941` |
| 432 | 00432_*.png(2 帧) | 50×50 | 二维码图标(Layer7 Spirit3260 用帧 1) | 帧 1 = `018c5320-85fe-415f-8811-5d5b703867f5@f9941`,帧 2 = `1bf2dbaf-948f-4000-91b6-dde20f95e483@f9941` |
| 168 | 00168.png | 135×80 | 反馈提交按钮(Layer9 Spirit550) | `6bc626b8-d480-4ba8-92ac-0f95e21761af@f9941` |
| 438 | 00438_*.png(2 帧) | 135×80 | 反馈提交按钮态(Layer9 Spirit3266 帧 1 / Spirit3265 帧 2) | 帧 1 = `a933d0bf-d0bc-43e0-b475-0d9d8a16262b@f9941`,帧 2 = `fdc6b65e-e526-49d2-aa05-eb4d891174bb@f9941` |
| 169 | 00169.png | 181×70 | 反馈标题(Layer9 Spirit676) | `02d0a481-5261-4d50-ad04-2695547afe37@f9941` |
| 346 | 00346.png | 1132×664(九宫格) | 通知背景(Layer9 Spirit78,边框 250/200/346/245) | `03393c45-1e39-42f5-b287-ea6fb574279c@f9941` |
| 218 | 00218.png | 250×40 | 通知底(Layer9 Spirit576) | `ac88bed1-d8b6-460d-9a1f-93d021c7b3f4@f9941` |
| 338 | 00338.png | 720×400 | 通知内容页(Layer9 Spirit3102) | `200f41c0-4ecf-4ad7-8864-877306a46fd1@f9941` |
| 339 | 00339.png | 770×400 | 通知内容页(Layer9 Spirit3105) | `cb2429ec-da7a-421e-8635-9d8e9599dfd7@f9941` |
| 340 | 00340.png | 770×400 | 通知内容页(Layer9 Spirit3106) | `dbeaba27-ba73-4fd0-9a5d-ae1dd8e1af1a@f9941` |
| 216 | 00216_*.png(2 帧) | 236×100 | 通知条目(Layer9 Spirit570/571/572 用帧 2) | 帧 2 = `a42d050f-b023-4580-9444-36552fa546e3@f9941` |
| 217 | 00217_*.png(8 帧) | 125×40 | 通知分类标签(Layer9 Spirit573 帧 1 / Spirit574 帧 3 / Spirit575 帧 5) | 帧 1 = `87d01b20-33bc-45b6-99cc-d22412f6e82f@f9941`,帧 3 = `9fd0b3df-4b98-428c-b2d3-fe3b467321b9@f9941`,帧 5 = `a972c966-3dc9-4396-8935-d2583f5ed499@f9941` |
| 423 | 00423.png | 955×640(九宫格) | 二维码背景(Layer9 Spirit342,边框 55/45/55/45) | `dfdcc5f5-bf77-42a6-8e2e-f8462bc51edc@f9941` |
| 115 | 00115.png | 321×287 | 二维码图(Layer9 Spirit343) | `06403876-e8f4-48fd-ad50-9bbefe0c5d0a@f9941` |
| 114 | 00114.png | 371×51 | 二维码文字(Layer9 Spirit344) | `0c0c1c72-96f5-4c54-a199-0df6189c762c@f9941` |
| 80 | 00080.png | 315×74 | 二维码底(Layer9 Spirit345) | `b1efcc9a-2999-4c92-8d68-d7462c4bca2e@f9941` |
| 38 | 00038.png | 280×530(九宫格) | 房间列表背景(Layer9 Spirit98,边框 50/50/50/50) | `083b1c88-4376-4aea-b08c-12eed59f94df@f9941` |
| 49 | 00049_*.png(10 帧) | 14×19 | 数字帧动画(Layer9 Spirit102 用帧 1,房间号数字) | 帧 1 = `9d49bb70-608e-46d2-8672-5afb78bbd8d7@f9941` |
| 429 | 00429_*.png(2 帧,1×2) | 148×73 | 手机验证码按钮(Layer29 Spirit3245 用帧 2,Frame=2) | 帧 2 = `1d3b6808-281b-48d4-a768-010fe68009ed@f9941` |
| 433 | 00433_*.png(11 帧,11×1) | 21×28 | 手机验证倒计时帧动画(Layer29 Spirit3246/3247/3248 用帧 1,FrameText=12 循环回绕帧 1) | 帧 1 = `62b9af40-6efd-4790-b049-416c4ed1c861@f9941` |
| 434 | 00434_*.png(2 帧,1×2) | 284×84 | 手机验证主按钮(Layer29 Spirit3252 用帧 1) | 帧 1 = `c0541eab-a8d2-4669-968a-d6bd2892fc02@f9941` |
| 435 | 00435_*.png(2 帧,2×1) | 45×62 | 手机验证图标(Layer29 Spirit3262 帧 1 / Spirit3263 帧 2) | 帧 1 = `84faf20a-3862-4fe9-85cf-1ad5de88f873@f9941`,帧 2 = `c6f6f99a-725d-4921-9c91-7625750b70f0@f9941` |
| 436 | 00436_*.png(2 帧,1×2) | 181×26 | 手机验证标签(Layer29 Spirit3249 帧 1 / Spirit3250 帧 2) | 帧 1 = `1441df71-9b70-4892-bffe-4b464ca3a4ff@f9941`,帧 2 = `b706d5cf-be38-4dac-8a31-37c377576dfa@f9941` |
| 375 | 00375_*.png(2 帧,1×2) | 236×100 | 白名单按钮(Layer29 Spirit3276 用帧 2,渲染 116×41) | 帧 2 = `66044cac-db4a-4354-8f83-de168e697cb1@f9941` |
| 7 | 00007.png | 441×395 | 牌桌主元素(Layer6 Spirit3170) | `8f185a74-fe9f-4b55-9e9b-42fa5daf15e3@f9941` |
| 13 | 00013.png | 1280×720 | 房间列表背景(Layer6 Spirit6,IsVisible=0 隐藏,全屏拉伸) | `185f4ed3-89dd-498f-bfe6-1dc89cc4a5a9@f9941` |
| 16 | 00016_*.png(5 帧,1×5) | 77×230(单帧 77×46) | 牌桌图标(Layer6 Spirit286 用帧 1)+ 仓库图标(Layer25 Spirit3078 用帧 1) | 帧 1 = `bf4f2fec-3b77-442f-97fd-d1bb71ce4d91@f9941` |
| 17 | 00017.png | 26×25 | 购买房卡图标(Layer6 Spirit10 / Spirit509 两处) | `13baa8d4-dd1b-419a-9153-a7d294c6a51b@f9941` |
| 18 | 00018.png | 155×35(九宫格) | 底牌栏(Layer6 Spirit287 / Spirit496,边框 70/1/70/1) | `e0ab2dec-b102-4404-a2b1-c1519983b4e2@f9941` |
| 19 | 00019_*.png(13 帧,13×1) | 221×28(单帧 17×28) | FrameText 金币数字(Layer6 Spirit3161 FrameText=1 / Spirit3162 FrameText=1000000) | 帧 1 = `fc6e9a8e-0a6d-4555-bc3e-88fd427b9f3a@f9941` |
| 26 | 00026_*.png(2 帧,1×2) | 132×80(单帧 132×40) | 牌桌元素(Layer6 Spirit3174 用帧 1) | 帧 1 = `12dd0f9c-72ab-4887-9413-b3018821c487@f9941` |
| 36 | 00036.png | 659×493 | 牌桌主元素(Layer6 Spirit3173,IsVisible=0 隐藏) | `f213b9c2-688e-421b-8371-b7e1154437a8@f9941` |
| 44 | 00044.png | 280×80 | 牌桌元素(Layer6 Spirit478) | `d1e52465-f634-4e54-861d-9ae49d9b73cf@f9941` |
| 45 | 00045_*.png(2 帧,1×2) | 159×120(单帧 159×60) | 牌桌按钮(Layer6 Spirit3175 帧 1 / Spirit3199 帧 2) | 帧 1 = `db98f2d6-9aea-42ad-b2eb-569d7fba0ac5@f9941`,帧 2 = `bfc9f9b0-f642-4b3c-a2f7-f1fd886df0a7@f9941` |
| 77 | 00077.png | 637×203 | 牌桌元素(Layer6 Spirit3176) | `b008b157-313a-445b-a5ea-501d55f3bee7@f9941` |
| 78 | 00078.png | 44×44 | 牌桌图标(Layer6 Spirit3181) | `362534c2-ef9e-4fc6-b4b8-aaa1be24d54f@f9941` |
| 79 | 00079_*.png(2 帧,2×1) | 500×131(单帧 250×131) | 牌桌元素(Layer6 Spirit3186 用帧 1) | 帧 1 = `cc2a414b-903f-41c2-b404-7152cf6453ab@f9941` |
| 92 | 00092.png | 102×103 | 牌桌图标(Layer6 Spirit3192) | `f2a266cb-1400-4948-9083-1c8dd029ce7a@f9941` |
| 176 | 00176.png | 309×322 | 牌桌元素(Layer6 Spirit3183,IsVisible=0 隐藏) | `2b8d7065-c1d3-40c0-aefb-a93867cb4418@f9941` |
| 203 | 00203_*.png(13 帧,13×1) | 299×35(单帧 23×35) | FrameText 数字(Layer6 Spirit3187 FrameText=123456 / Spirit3197 FrameText=1) | 帧 1 = `a209c78b-b882-470b-a7a0-a1ce40c59755@f9941` |
| 207 | 00207_*.png(2 帧,1×2) | 218×160(单帧 218×80) | 牌桌按钮(Layer6 Spirit3184 帧 1 / Spirit3240 帧 2) | 帧 1 = `3213a1f8-60a5-4a2d-8451-ce082e8dc1e3@f9941`,帧 2 = `604ed57e-9d10-4cb1-a247-696d67db84e0@f9941` |
| 333 | 00333_*.png(2 帧,1×2) | 141×100(单帧 141×50) | 牌桌按钮(Layer6 Spirit3194 帧 1 / Spirit3195 帧 2) | 帧 1 = `93f88a85-291f-4fa7-94a6-ee2cca507eb9@f9941`,帧 2 = `72af5aa1-edd8-4863-99fe-f6648247157f@f9941` |
| 387 | 00387.png | 257×57 | 牌桌标题(Layer6 Spirit3196)+ 高级选项按钮/输入框(Layer28 Spirit3097 普通 / Spirit3236 九宫格 20/20/20/20) | `a33762cf-de9a-4dd8-a140-12954813f005@f9941` |
| 421 | 00421_*.png(3 帧,1×3) | 141×150(单帧 141×50) | 牌桌按钮(Layer6 Spirit3214 帧 1 / Spirit3215 帧 2 / Spirit3235 帧 3) | 帧 1 = `733acef5-3fad-4869-8b3d-a16fa499cbd4@f9941`,帧 2 = `22c562c5-e009-4473-afac-8bc203b3b82d@f9941`,帧 3 = `c47d4ba6-c8e0-4263-8214-ccaa7c68e2ee@f9941` |
| 422 | 00422.png | 111×93 | 玩家信息元素(Layer6 Spirit3232 group-3 / Spirit3231 group-103 渲染 112×93) | `d375e75a-db92-408e-966d-d314367fa4d4@f9941` |
| 424 | 00424.png | 102×78 | 玩家信息元素(Layer6 Spirit3233 group-3) | `6148cbb3-20e6-4a37-86fd-6b26a179fe72@f9941` |
| 431 | 00431_*.png(2 帧,1×2) | 156×128(单帧 156×64) | 玩家信息元素(Layer6 Spirit3256 group-3 用帧 1) | 帧 1 = `afea66bf-d6bf-431c-8afd-aac1b952cddd@f9941` |
| 437 | 00437.png | 133×98 | 玩家信息元素(Layer6 Spirit3264 group-3) | `59903a63-a454-42ae-b666-9828e77f6285@f9941` |
| 189 | 00189_*.png(5 帧,竖排) | 559×138(单帧) | 支付金额选择标题(Layer14 Spirit360 用帧 1) | 帧 1 = `dad5a5b2-1c64-4641-bb95-653b956a4bb5@f9941` |
| 190 | 00190_*.png(5 帧) | 208×210(单帧) | 支付金额选择按钮(Layer14 Spirit416~425 用帧 1) | 帧 1 = `34f101dd-a0fe-4fdd-bdac-d7d01a2f47c3@f9941` |
| 191 | 00191_*.png(11 帧) | 26×32(单帧) | 金额数字 FrameText(Layer14 Spirit446~455 用帧 1,FrameText="12") | 帧 1 = `c9d95e2a-3897-415e-ad0c-16f6833cd91f@f9941` |
| 192 | 00192_*.png(11 帧) | 60×70(单帧) | 金额数字 FrameText(Layer14 Spirit460 用帧 1,FrameText="12") | 帧 1 = `9eef61bf-02e3-42f6-9ce8-ac538d50ac9a@f9941` |
| 193 | 00193_*.png(4 帧,2×2) | 228×80(单帧) | 支付确认/取消按钮(Layer14 Spirit461/463 用帧 1、Spirit462 用帧 3) | 帧 1 = `51d7a3be-2608-460b-88b6-d564ed188218@f9941`,帧 3 = `262e5415-2332-4aa5-9a68-ab014ca38104@f9941` |
| 194 | 00194.png | 484×89 | 支付确认大按钮(Layer14 Spirit464) | `159c38bb-ddb9-4d16-95ba-d2c8af2b879b@f9941` |
| 195 | 00195.png | 119×26 | 支付标题小字(Layer14 Spirit459) | `3abeb587-2ba7-4c13-9419-4bac6e3a6fe2@f9941` |
| 196 | 00196_*.png(5 帧,竖排) | 320×31(单帧) | 支付确认弹窗标题(Layer14 Spirit458 用帧 1) | 帧 1 = `050c6f8e-766e-4186-b283-85c34dc74d01@f9941` |
| 197 | 00197.png | 848×591(九宫格) | 支付确认弹窗背景(Layer14 Spirit457,边框 70/70/70/70) | `557349f8-491a-4e0d-8ee8-484b1f7405a8@f9941` |
| 322 | 00322_*.png(3 帧,1×3) | 51×25(单帧) | 仓库小按钮(Layer25 Spirit3063 帧2 / Spirit3064 帧3 / Spirit3065/3066 帧3 / Spirit3084 帧1 / Spirit3085 帧2 / Spirit3086 帧3) | 帧 1 = `a1a6b56a-7b5f-46bb-a449-46a0783d31be@f9941`,帧 2 = `b8f62e44-4e03-48ff-bc30-28d890f63f36@f9941`,帧 3 = `4e46f996-8283-41c5-8e08-c92d96d46863@f9941` |
| 323 | 00323_*.png(2 帧,1×2) | 348×61(单帧) | 仓库输入框(Layer25 Spirit3038/3039/3067/3068/3087/3088/3089 用帧 1) | 帧 1 = `c590bdfd-708e-47d0-86f9-c12fd6fabe1d@f9941` |
| 324 | 00324_*.png(2 帧,2×1) | 49×49(单帧) | 仓库图标(Layer25 Spirit3034/3035/3075/3076 用帧 1) | 帧 1 = `6ea3fecc-a433-4a94-99a0-72b9fecb3f48@f9941` |
| 325 | 00325_*.png(3 帧,1×3) | 233×25(单帧) | 仓库输入条(Layer25 Spirit3040 帧1 / Spirit3041 帧2 / Spirit3090 帧3 / Spirit3091 帧1 / Spirit3092 帧2) | 帧 1 = `e76aeac6-7710-46ac-8a26-82423fe88728@f9941`,帧 2 = `14a0a1f1-605b-4e17-bed7-1cf146ace600@f9941`,帧 3 = `66f6b2a3-1012-428f-8c73-b510ba196ded@f9941` |
| 326 | 00326_*.png(2 帧,1×2) | 63×31(单帧) | 仓库小按钮(Layer25 Spirit3036 帧1 / Spirit3037 帧2) | 帧 1 = `d61da596-e91f-44ee-ad95-c60a7bd1aa1a@f9941`,帧 2 = `b69b484c-6614-46f2-bb11-aef5c9e2c072@f9941` |
| 327 | 00327.png | 403×76 | 仓库标题(Layer25 Spirit3031) | `ada2a16c-46c1-448b-9d71-184f6af8e14c@f9941` |
| 328 | 00328_*.png(12 帧,3×4) | 131×77(单帧) | 仓库物品格子(Layer25 Spirit3044 帧11 / Spirit3045~3055 帧1~10/12) | 帧 1 = `709f0415-967c-4044-8421-14e732b71ea9@f9941`,帧 2 = `da10d8d8-c28e-460c-80d3-5e60552d5709@f9941`,帧 3 = `16be1ca8-702f-40a6-b9bf-f9697ae71621@f9941`,帧 4 = `96b25724-1e76-41f9-b84d-2c0200bbad9c@f9941`,帧 5 = `f419824f-097b-4f9d-b96a-4ac03c786eb0@f9941`,帧 6 = `3e49d151-a14c-40ff-afb4-743831108e05@f9941`,帧 7 = `ce278762-2213-43ad-baf2-25a1dcab76dd@f9941`,帧 8 = `9397e708-75f0-48ee-9ead-28b319582a3f@f9941`,帧 9 = `05076ef5-5acd-482d-a685-24abdf2dd5dd@f9941`,帧 10 = `d6ab4157-bf1b-4cd1-90c0-ac6fb4de44ab@f9941`,帧 11 = `b7b84d44-7f5f-49c5-9b4b-01dae729c40b@f9941`,帧 12 = `eac89782-a461-41de-9dda-0d5aa03b3e04@f9941` |
| 329 | 00329_*.png(10 帧,10×1) | 27×34(单帧) | 仓库数字 FrameText(Layer25 Spirit3033/3056/3058 FrameText="10000"、Spirit3071 FrameText="1"、Spirit3072 FrameText="9999"、Spirit3079/3080/3093/3094/3095 FrameText="111"/"222" 均用帧 1) | 帧 1 = `089f6155-1876-464a-a726-bcf016091508@f9941` |
| 330 | 00330.png | 104×55 | 仓库按钮(Layer25 Spirit3096) | `8c754215-97c0-43f0-ac16-816227add1f1@f9941` |
| 332 | 00332_*.png(2 帧,1×2) | 236×100(单帧) | 仓库左侧 tab(Layer25 Spirit3059 帧1 / Spirit3060 帧2) | 帧 1 = `0af58858-c0d7-4e27-9d71-ec286c1c8deb@f9941`,帧 2 = `c7298af1-c72d-4a47-8da8-b9f9aa4b8b7b@f9941` |
| 334 | 00334.png | 311×23 | 仓库按钮(Layer25 Spirit3074) | `add7b249-18ee-40da-b67c-ad42f7ac61bc@f9941` |
| 335 | 00335_*.png(4 帧,2×2) | 97×37(单帧) | 仓库 tab 图标(Layer25 Spirit3061 帧1 / Spirit3062 帧3) | 帧 1 = `619c2f40-6e6e-42e0-811f-da4ced7e1c5d@f9941`,帧 3 = `2371d2b0-9f13-4dc7-9266-74ddcd1a933e@f9941` |
| 336 | 00336.png | 93×93 | 仓库头像框(Layer25 Spirit3081,渲染 70×70) | `c7f4102c-d134-4e01-bb5f-8082e990eba1@f9941` |
| 337 | 00337_*.png(2 帧,1×2) | 154×25(单帧) | 仓库按钮(Layer25 Spirit3069 帧1 / Spirit3070 帧2) | 帧 1 = `bfa7e4c3-0bb1-43fd-a6d1-266bc760e2db@f9941`,帧 2 = `7899c2d8-537a-4374-9b89-f15a7f676e04@f9941` |
| 374 | 00374.png | 1132×664(九宫格) | 仓库背景(Layer25 Spirit3030,边框 400/200/346/245) | `90371a42-824c-4e7b-afd6-ed6138db9014@f9941` |
| 32 | 00032_*.png(2 帧,1×2) | 149×30(单帧) | 做任务按钮(Layer26 Spirit122/125/128/131/134 用帧 1) | 帧 1 = `0179e156-c67a-4155-97be-19f95c20c5d6@f9941`,帧 2 = `d3319923-eaae-4ec1-aa0a-120a7e424473@f9941` |
| 43 | 00043_*.png(5 帧,5×1) | 269×453(单帧) | 任务卡片背景(Layer26 Spirit120/123/126/129/132 用帧 1) | 帧 1 = `2327b915-6dba-405a-9604-c2e7e9410638@f9941`,帧 2 = `13181e32-e14b-437a-b586-3d04479b2dc8@f9941`,帧 3 = `008a7f94-0c6a-42ff-ad2e-3376048a1001@f9941`,帧 4 = `cbfea016-6003-4fb0-8c74-153c3839984d@f9941`,帧 5 = `2c4d4902-2b4e-4819-a138-7f49ac790bb5@f9941` |
| 55 | 00055_*.png(2 帧,1×2) | 171×58(单帧) | 任务领取按钮(Layer26 Spirit121/124/127/130/133 用帧 1) | 帧 1 = `5b3f363e-0430-464b-9695-320d93846dcf@f9941`,帧 2 = `770d2c6e-8432-4a4b-8693-f79d69c5c032@f9941` |
| 56 | 00056.png | 204×23 | 任务进度背景(Layer26 Spirit311~314) | `4076f965-095a-47cb-8278-5683330e8f28@f9941` |
| 57 | 00057.png | 202×21 | 任务进度前景(Layer26 Spirit315~318) | `5aa742e1-c2b1-4de6-ae02-13675a9165b4@f9941` |
| 58 | 00058_*.png(2 帧,1×2) | 81×26(单帧) | 已领取标记(Layer26 Spirit328~331 用帧 2) | 帧 1 = `0544adf8-a09d-44b3-ba22-03cfadc5d61e@f9941`,帧 2 = `cffa3693-5396-4c45-99bd-611d00ab3be2@f9941` |
| 219 | 00219_*.png(3 帧,1×3) | 109×50(单帧) | 高级选项按钮(Layer28 Spirit3131 帧1 / Spirit580 帧2 / Spirit592 帧3) | 帧 1 = `300c7e3e-a243-4dfe-a08a-7c714a2afd7c@f9941`,帧 2 = `2648d1b2-b6cc-46b0-a2a3-487d5eeed8e5@f9941`,帧 3 = `a7a7ae0b-d906-4e03-8f37-5355a9580997@f9941` |
| 220 | 00220.png | 503×18 | 高级选项分隔线(Layer28 Spirit596) | `47c78a4b-859b-45ad-a7c5-f7c223e43402@f9941` |
| 221 | 00221.png | 70×52 | 高级选项图标(Layer28 Spirit597) | `15250612-15fc-4a47-a938-122a9f4cb8fb@f9941` |
| 224 | 00224.png | 485×169(九宫格) | 高级选项下方按钮/面板(Layer28 Spirit622,边框 90/90/90/90) | `ff323f32-7811-4c41-b5aa-2068b339bb62@f9941` |
| 225 | 00225_*.png(3 帧,1×3) | 109×74(单帧) | 高级选项按钮(Layer28 Spirit627 用帧 2) | 帧 2 = `76e7e50f-da8b-42f4-8beb-2b76b481fb31@f9941` |
| 227 | 00227_*.png(10 帧,10×1) | 18×22(单帧) | 高级选项数字 sprite(Layer28 Spirit593/594/595/624/3099/3237 用帧 1,短号数字) | 帧 1 = `633ee510-9b17-4421-b86b-4cfd177a70b7@f9941` |
| 228 | 00228_*.png(10 帧,10×1) | 26×37(单帧) | 高级选项短号输入框(Layer28 Spirit598 用帧 1,数字) | 帧 1 = `a97f2ec6-99dc-4e81-8d8e-6e71ed457954@f9941` |
| 229 | 00229.png | 185×60 | 高级选项按钮(Layer28 Spirit625,FrameIndex=5 回绕帧 1) | `310e499a-4902-4123-97e5-169b53923193@f9941` |
| 230 | 00230.png | 168×178 | 高级选项图标(Layer28 Spirit603) | `c3da0aeb-635c-425b-9bcc-d2303908658b@f9941` |
| 236 | 00236_*.png(3 帧,1×3) | 204×85(单帧) | 高级选项分享按钮(Layer28 Spirit626 帧1 / Spirit652 分享好友 帧2 / Spirit653 分享朋友圈 帧3) | 帧 1 = `c91b912e-9477-4a24-a87c-94494b9e0737@f9941`,帧 2 = `df12cd1c-1c9d-479c-bbdf-ec4d540a8d3e@f9941`,帧 3 = `152b4b63-7526-4798-a8bc-4257c166adf8@f9941` |
| 382 | 00382.png | 1280×720 | 全屏遮罩(Layer28 Spirit577 拉伸 1600×720) | `c4135216-ddb5-44ba-be74-7d6ae4e24356@f9941` |
| 383 | 00383.png | 656×497(九宫格) | 高级选项左面板背景(Layer28 Spirit578,边框 55/45/55/45) | `4713b0f6-aae8-4cf6-af8f-3a34f8b5d673@f9941` |
| 384 | 00384.png | 124×77 | 高级选项图标(Layer28 Spirit579) | `08b94e95-0c30-4d6b-8528-6a6f6bb46ae9@f9941` |
| 385 | 00385.png | 209×81 | 高级选项标题(Layer28 Spirit581,FrameIndex=2 回绕帧 1) | `c2fe1edc-2118-4ed3-9b50-d58e8d75f248@f9941` |
| 386 | 00386.png | 288×174(九宫格) | 高级选项内框(Layer28 Spirit3129 拉伸 542×174 / Spirit3137 拉伸 511×528,边框 55/45/55/45) | `b32b6454-e428-4e5f-95e2-6b9762e59004@f9941` |
| 388 | 00388.png | 111×21 | 高级选项文本条(Layer28 Spirit3130) | `73825a17-2ad5-4e0d-8857-66fa68ba30af@f9941` |
| 389 | 00389.png | 75×26 | 高级选项小标签(Layer28 Spirit3132) | `1f17584a-f31c-41f2-9fad-c088dc7e6ad4@f9941` |
| 390 | 00390_*.png(2 帧,1×2) | 40×40(单帧) | 高级选项勾选框/开关(Layer28 Spirit3100/3166/3167 用帧 2) | 帧 2 = `2e74c3dc-b460-43ca-8205-3eb1ba2ad650@f9941` |
| 391 | 00391_*.png(2 帧,1×2) | 191×57(单帧) | 高级选项按钮(Layer28 Spirit3133/3164/3258 用帧 2) | 帧 2 = `40919583-15ce-43d5-96f4-c10402db8e0a@f9941` |
| 392 | 00392.png | 564×679(九宫格) | 高级选项右面板背景(Layer28 Spirit3135,边框 55/45/55/45) | `6a91aa70-a26b-43d1-8a0c-520521cfde08@f9941` |
| 393 | 00393.png | 270×55 | 高级选项右面板标题(Layer28 Spirit3136) | `bcf9e835-69ac-468d-b3a7-c3a0fe0f824e@f9941` |
| 395 | 00395.png | 42×33 | 高级选项小图标(Layer28 Spirit3138,FrameIndex=2 回绕帧 1) | `d8b5863a-62ce-4ff8-a233-946f532e21f1@f9941` |
| 397 | 00397.png | 144×62 | 高级选项按钮(Layer28 Spirit3140,FrameIndex=2 回绕帧 1) | `caa45852-94dd-4002-a624-c33469e341bb@f9941` |
| 408 | 00408.png | 241×50 | 高级选项按钮/输入条(Layer28 Spirit3158) | `d984148c-201a-479f-b29c-8b448ee8c6f6@f9941` |
| 410 | 00410.png | 110×30 | 高级选项小按钮(Layer28 Spirit3163,FrameIndex=2 回绕帧 1) | `6639015c-6206-465e-9ff1-8d320d443d77@f9941` |
| 426 | 00426_*.png(2 帧,1×2) | 87×46(单帧) | 高级选项小按钮(Layer28 Spirit3238 帧1 / Spirit3257 帧2) | 帧 1 = `9d4cd734-7d5c-48f7-a98b-cf3846955e32@f9941`,帧 2 = `acf55d2f-fd0e-4b51-ae04-41f78c75cec4@f9941` |
| 39 | 00039.png | 629×36(九宫格) | 游戏公告滚动背景(Layer402 Spirit389 拉伸 629×40,边框 1/1/1/1) | `6e5777d9-88db-40e8-b4bc-2739951717e3@f9941` |
| 68 | 00068_*.png(2 帧,2×1) | 88×88(单帧) | 录音/消息按钮(Layer405 Spirit152 录音 帧2 / Spirit153 消息 帧1) | 帧 1 = `09564741-b821-449f-ae85-c652282ef6c6@f9941`,帧 2 = `ab463835-86de-4648-af02-5de9d5af0668@f9941` |
| 179 | 00179_*.png(2 帧,1×2) | 157×74(单帧) | 确认/取消按钮(Layer420 Spirit245 确认 帧1 / Spirit246 取消 帧2) | 帧 1 = `a29710ee-adc5-496e-8fe4-8bf1c2351af6@f9941`,帧 2 = `90826223-0181-49e5-9547-5b52195b014a@f9941` |
| 181 | 00181_*.png(5 帧,1×5) | 494×28(单帧) | 主场景底条(Layer404 Spirit195 帧1) | 帧 1 = `8541e1cf-02b3-4e12-8e87-957127dccc85@f9941` |
| 208 | 00208_*.png(2 帧,1×2) | 184×80(单帧) | 准备/开始按钮(Layer403 Spirit515 准备 帧1 / Layer404 Spirit184 开始 帧2) | 帧 1 = `b8a0a85a-788c-4dc6-9736-2158cdb7d234@f9941`,帧 2 = `0c369998-cb71-4e12-afa5-d86977f31de3@f9941` |
| 215 | 00215_*.png(2 帧,1×2) | 300×70(单帧) | 主场景双态按钮(Layer404 Spirit569 帧1 / Spirit183 帧2) | 帧 1 = `d13b89de-45cf-46c6-ba15-b0a113dd085a@f9941`,帧 2 = `30aee7c2-237f-4bde-8bdf-34cd4b644bfb@f9941` |
| 342 | 00342.png | 27×27(九宫格) | 录音按钮九宫格底(Layer405 Spirit3118,边框 13/13/13/13) | `3c09029f-06e3-4a28-85d2-c1dbc72e6bd5@f9941` |
| 343 | 00343.png | 102×64 | 消息按钮图标(Layer405 Spirit3115,FrameIndex=4 回绕帧 1) | `7ab30157-c08a-4d03-b3bb-f54bce82f79d@f9941` |
| 400 | 00400.png | 742×48 | 房号背景(Layer411 Spirit3143) | `0aa23b29-6e06-49d4-98e5-e190a990d6a4@f9941` |
| 403 | 00403.png | 160×60 | 图标(Layer411 Spirit3151) | `101fa2b1-699f-4d7d-a72f-8ca7c3bcecc7@f9941` |
| 404 | 00404_*.png(2 帧,1×2) | 160×80(单帧) | 解散/退出按钮(Layer411 Spirit3144 解散 帧2 / Spirit3145 退出 帧3 回绕帧 1) | 帧 1 = `eb30a042-da99-47c2-8cc3-312497477522@f9941`,帧 2 = `de1ae4c7-7cd0-429e-8ec9-f60031c5e86c@f9941` |
| 83 | 00083.png | 127×63(九宫格) | 语音气泡(Layer409 10 个)+ 聊天气泡(Layer410 10 个),边框 30/20/30/20 | `8c4a282d-467c-4e53-be42-d65cec714689@f9941` |
| 99 | 00099_*.png(7 帧,7×1) | 143×135(单帧) | 互动动画(Layer408 Spirit274~278 用帧1) | 帧 1 = `44a9e557-91e1-4737-8d50-739c36a17e29@f9941` |
| 100 | 00100_*.png(3 帧,3×1) | 20×25(单帧) | 语音动画(Layer409 10 个用帧1) | 帧 1 = `a896b90f-7405-458b-85a6-accb6618a16f@f9941` |
| 102 | 00102_*.png(12 帧,12×1) | 110×98(单帧) | 互动动画(Layer408 Spirit292~296 用帧1) | 帧 1 = `303b89dd-e104-4aee-809c-433e3fa3d993@f9941` |
| 103 | 00103_*.png(4 帧,1×4) | 400×200(单帧,渲染 200×100) | 互动动画(Layer408 Spirit297~301 用帧1) | 帧 1 = `4589db32-441a-4662-a380-3df0d128e657@f9941` |
| 104 | 00104_*.png(12 帧,12×1) | 130×130(单帧) | 互动动画(Layer408 Spirit302~306 用帧1) | 帧 1 = `66399f35-347a-4c09-9cd9-e944545ae31a@f9941` |
| 105 | 00105.png | 64×64(九宫格) | 玩家信息表情图标×8(Layer416,边框 20/20/20/20) | `e52b27d3-87da-4771-a470-688e70a61096@f9941` |
| 205 | 00205.png | 72×29 | 图标(Layer413 Spirit512) | `4bdef9c1-bcc2-433c-b904-e16e504bcc98@f9941` |
| 238 | 00238_*.png(7 帧,1×7) | 155×80(单帧) | 按钮面板按钮×7(Layer413 Spirit151/150/233/3014/513/656/185 用帧1~7) | 帧 1 = `932f3dff-2b3f-40e3-a406-5d49cf19c68d@f9941`,帧 2 = `7a4f099f-3d06-48f6-bf23-aaebfb59d7a1@f9941`,帧 3 = `4b739e68-edaf-4406-ad6d-da78ec629058@f9941`,帧 4 = `e76a66a6-bbca-4a9d-815a-cedc8860efb5@f9941`,帧 5 = `fb6bc555-732a-4756-baa3-704c7259798b@f9941`,帧 6 = `c0f545ef-1556-41c4-8c1e-06ff6ab2c694@f9941`,帧 7 = `5ad50aac-d65e-4efe-923d-8a96baf5f26b@f9941` |
| 377 | 00377.png | 100×88 | 图标(Layer413 Spirit107) | `d2b9a6bb-2125-444a-827b-167139647e90@f9941` |
| 378 | 00378.png | 396×720(九宫格) | 按钮面板侧边(Layer413 Spirit108,边框 1/1/1/1) | `87feae97-a87a-4102-9bf4-6bcaf2349902@f9941` |
| 379 | 00379.png | 265×181(九宫格) | 按钮面板大背景(Layer413 Spirit109 渲染 280×126,边框 90/90/90/90) | `7771f99c-8227-4b5c-a07a-3bbf69eb0e2b@f9941` |
| 401 | 00401.png | 54×60 | 图标(Layer413 Spirit3149) | `d7473ba7-c4bf-485c-b440-fe819e470112@f9941` |
| 402 | 00402.png | 252×120(九宫格) | 按钮面板输入框(Layer413 Spirit3148 渲染 141×33,边框 20/50/20/10) | `ae8f5608-c489-49e9-857b-14a255dccf42@f9941` |
| 76 | 00076.png | 129×176(九宫格) | 玩家座位底(Layer202 Spirit346~355 渲染 129×176,边框 45/45/45/45) | `9d56940c-03d8-4921-b0a7-ef9d96a6adc5@f9941` |
| 117 | 00117.png | 93×93 | 玩家头像(Layer202 Spirit377) | `1246d5ba-8566-4365-b93f-33b195a43dea@f9941` |
| 118 | 00118.png | 93×93 | 玩家头像(Layer202 Spirit378) | `db56d262-0df6-4601-b3f4-d5db43198803@f9941` |
| 119 | 00119.png | 93×93 | 玩家头像(Layer202 Spirit379) | `0aed62e5-d0f2-412b-a2e7-000ec463db3f@f9941` |
| 120 | 00120.png | 93×93 | 玩家头像(Layer202 Spirit380) | `2841c52e-92a1-40c6-a445-299df9606aa9@f9941` |
| 121 | 00121.png | 93×93 | 玩家头像(Layer202 Spirit381) | `c4194536-2b35-4b69-bbd1-2d9925f23a5b@f9941` |
| 122 | 00122.png | 93×93 | 玩家头像(Layer202 Spirit382) | `20fdf722-00e2-4e1e-939d-48fdc139db7c@f9941` |
| 123 | 00123.png | 93×93 | 玩家头像(Layer202 Spirit383) | `9358bdc7-f8cd-41f2-ba06-252fe194872a@f9941` |
| 124 | 00124.png | 93×93 | 玩家头像(Layer202 Spirit384) | `4ad247a0-c0b3-4a14-b0a0-fd9beeb5da37@f9941` |
| 125 | 00125.png | 93×93 | 玩家头像(Layer202 Spirit385) | `a7f1330f-4c94-425f-a0ac-ab07d60ee206@f9941` |
| 146 | 00146.png | 105×99 | 表情底(Layer202 Spirit468~477) | `47fd71d0-b38a-4b27-850c-0d27f5318db0@f9941` |
| 147 | 00147_*.png(5 帧) | 100×100(单帧) | 表情图标(Layer202 Spirit498~507 用帧1) | 帧 1 = `adad69bf-4541-42d2-8a5f-1b3462bf9a5a@f9941`,帧 2 = `a918e3ac-79ca-483f-95d6-5b27a7d9de8e@f9941`,帧 3 = `9de19dbc-eaa6-45eb-b12d-b64ac29112b5@f9941`,帧 4 = `6db90928-993c-4029-8ae8-ccbff51c3a85@f9941`,帧 5 = `b6434791-0afa-4b49-96d5-24f138f0dbfe@f9941` |
---
## 3. 每个 prefab 详细说明
> 约定:`lpos` = 相对父节点中心的偏移;`Widget hc` = `_horizontalCenter`;所有节点 anchorPoint = (0.5, 0.5)。
### 3.1 Layer619_BackHall.prefab(BackHall_Layer,返回大厅)
源 Layer00619.xml:1 spirit,GroupID=55。
```
Layer619_BackHall UITransform 1600×720 Widget 45
└─ group-55 UITransform 1600×720 Widget 45
└─ Spirit465 UITransform 91×91 Widget 16 (hc=569.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit465 | ObjectID=465, X=1164 Y=146 W=91 H=91, ImgResID=31, Frame=1, CanClick=1 | Sprite sf=`8e3905be-…@f9941` type=0 sizeMode=0;contentSize 91×91;lpos (569.5, 168.5);Widget 16 hc=569.5 |
**脚本驱动要点**:
- Spirit465 是「返回大厅」按钮(`CanClick=1`),XML Event 为空 → 需脚本 `bind_button_click_event` 绑定点击回调。
### 3.2 Layer614_Loading.prefab(Loading_Layer,载入遮罩)
源 Layer00614.xml:2 spirits,GroupID=40。
```
Layer614_Loading UITransform 1600×720 Widget 45
└─ group-40 UITransform 1600×720 Widget 45
├─ 载入遮罩 UITransform 1600×720 Widget 45
└─ 载入动画 UITransform 150×150 Widget 16 (hc=0)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 载入遮罩 | ObjectID=326, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**(全屏拉伸);lpos (0,0);Widget 45 |
| 载入动画 | ObjectID=327, X=565 Y=285 W=150 H=150, ImgResID=108, Frame=1 | Sprite sf=`e966950a-…@f9941` type=0 sizeMode=0;contentSize 150×150;lpos (0,0);Widget 16 hc=0 |
**脚本驱动要点**:
- 载入遮罩(`CanClick=1`)XML Event `MouseUp=326`(自引用)→ 语义为「点击关闭 loading」,脚本绑定点击回调。
- 载入动画 `frame_all=1`(单帧静态),若后续要转圈动画需脚本切 spriteFrame 或加 Animation(源为静态图)。
### 3.3 Layer616_Kick.prefab(Kick_Layer,强制下线提示)
源 Layer00616.xml:3 spirits,GroupID=33。
```
Layer616_Kick UITransform 1600×720 Widget 45
└─ group-33 UITransform 1600×720 Widget 45
├─ 强制下线提示 UITransform 1600×720 Widget 45
├─ 强制下线提示底 UITransform 600×105 Widget 16 (hc=-1)
└─ 强制退出提示文字 UITransform 168×28 Widget 16 (hc=-18) [Label]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 强制下线提示 | ObjectID=224, X=0 Y=0 W=1280 H=720, ImgResID=11 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 强制下线提示底 | ObjectID=225, X=339 Y=292 W=600 H=105, ImgResID=87 | Sprite sf=`c6295419-…@f9941` type=0 sizeMode=0;contentSize 600×105;lpos (-1, 15.5);Widget 16 hc=-1 |
| 强制退出提示文字 | ObjectID=227, X=538 Y=330 W=168 H=28, FontSize=16, FontColor=16777215, Text="强制退出提示文字" | Label string=`强制退出提示文字` fontSize=16 lineHeight=16 color=白(255,255,255,255);contentSize 168×28;lpos (-18, 16);Widget 16 hc=-18 |
**脚本驱动要点**:
- 强制退出提示文字(Label)是**动态文本**:`_string` 运行时由脚本替换为实际提示内容(源 `Text="强制退出提示文字"` 是占位)。
- 强制下线提示底是「提示框底图」,文字叠加其上(lpos 差 (17, 0.5),文字略偏左下对齐底图)。
### 3.4 Layer613_RoomCardUpdate.prefab(updateRoomCard_Layer,房卡修改)
源 Layer00613.xml:3 spirits,GroupID=34。
```
Layer613_RoomCardUpdate UITransform 1600×720 Widget 45
└─ group-34 UITransform 1600×720 Widget 45
├─ 房卡修改遮罩 UITransform 1600×720 Widget 45
├─ 房卡修改背景 UITransform 570×105 Widget 16 (hc=12)
└─ 房卡修改提示文字 UITransform 168×28 Widget 16 (hc=-50) [Label]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 房卡修改遮罩 | ObjectID=226, X=0 Y=0 W=1280 H=720, ImgResID=11 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 房卡修改背景 | ObjectID=228, X=367 Y=288 W=570 H=105, ImgResID=87 | Sprite sf=`c6295419-…@f9941` type=0 sizeMode=0;contentSize 570×105;lpos (12, 19.5);Widget 16 hc=12 |
| 房卡修改提示文字 | ObjectID=229, X=506 Y=324 W=168 H=28, FontSize=16, FontColor=16777215, Text="房卡修改提示文字" | Label string=`房卡修改提示文字` fontSize=16 lineHeight=16 color=白;contentSize 168×28;lpos (-50, 22);Widget 16 hc=-50 |
**脚本驱动要点**:
- 房卡修改提示文字(Label)是**动态文本**:`_string` 运行时由脚本替换(源 `Text="房卡修改提示文字"` 是占位)。
- 遮罩 `CanClick=1`,XML Event 空 → 脚本按需 `bind_button_click_event`(通常「点击关闭」)。
### 3.5 Layer615_Reconnect.prefab(Reconnect_Layer,掉线重连)
源 Layer00615.xml:4 spirits,GroupID=35。
```
Layer615_Reconnect UITransform 1600×720 Widget 45
└─ group-35 UITransform 1600×720 Widget 45
├─ 掉线遮罩 UITransform 1600×720 Widget 45
├─ 掉线背景 UITransform 454×207 Widget 16 (hc=0)
├─ 重连动画 UITransform 64×64 Widget 16 (hc=0)
└─ 重连文字 UITransform 171×28 Widget 16 (hc=0.5) [Sprite]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 掉线遮罩 | ObjectID=230, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 掉线背景 | ObjectID=231, X=413 Y=257 W=454 H=207, ImgResID=54 | Sprite sf=`4b04584c-…@f9941` type=0 sizeMode=0;contentSize 454×207;lpos (0,-0.5);Widget 16 hc=0 |
| 重连动画 | ObjectID=232, X=608 Y=293 W=64 H=64, ImgResID=97, SpiritType=3, Frame=1, FrameIndex=1 | Sprite sf=`5690de47-…@f9941`(第 1 帧)type=0 sizeMode=0;contentSize 64×64;lpos (0,35);Widget 16 hc=0 |
| 重连文字 | ObjectID=255, X=555 Y=390 W=171 H=28, ImgResID=98, ObjectType=2 | Sprite sf=`837b6d75-…@f9941` type=0 sizeMode=0;contentSize 171×28;lpos (0.5,-44);Widget 16 hc=0.5 |
**脚本驱动要点**:
- **重连文字是 Sprite,不是 Label**(ObjectType=2、ImgResID=98,源 XML SpiritType=0 无 FontSize/Text):文字已烘焙在图片 `00098.png` 里,脚本无需 set string,只按需显隐/换图。
- **重连动画是多帧 sprite**(ImgResID=97,源 `SpiritType=3` + `Frame=1`,8 帧 `00097_1~8.png`):迁移只落第 1 帧为 spriteFrame,运行时逐帧动画需脚本循环切 spriteFrame 或加 cc.Animation。
- 掉线遮罩 `CanClick=1`,XML Event 空 → 脚本按需 `bind_button_click_event`(通常「点击取消重连/关闭」)。
### 3.6 Layer10_Protol.prefab(Protol_Layer,协议弹窗)
源 Layer00010.xml:4 spirits,GroupID=37。
```
Layer10_Protol UITransform 1600×720 Widget 45
└─ group-37 UITransform 1600×720 Widget 45
├─ 协议遮罩 UITransform 1600×720 Widget 45
├─ 协议背景 UITransform 820×650 Widget 16 (hc=-7) [9-slice]
├─ 协议内容 UITransform 729×997 Widget 16 (hc=-5.5)
└─ Spirit253 UITransform 83×84 Widget 16 (hc=395.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 协议遮罩 | ObjectID=250, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 协议背景 | ObjectID=251, X=223 Y=30 W=820 H=650, ImgResID=41, SpiritType=5, 边距 55/45/55/45 | Sprite sf=`3e7492cb-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 820×650;lpos (-7,5);Widget 16 hc=-7;spriteFrame border/capInsets=[55,45,55,45] |
| 协议内容 | ObjectID=252, X=270 Y=70 W=729 H=997, ImgResID=95 | Sprite sf=`998850c4-…@f9941` type=0 sizeMode=0;contentSize 729×997;lpos (-5.5,-208.5);Widget 16 hc=-5.5 |
| Spirit253 | ObjectID=253, X=994 Y=6 W=83 H=84, ImgResID=33, CanClick=1 | Sprite sf=`eedce6d7-…@f9941` type=0 sizeMode=0;contentSize 83×84;lpos (395.5,312);Widget 16 hc=395.5 |
**脚本驱动要点**:
- **协议背景是九宫格**(源 `SpiritType=5`,边距 55/45/55/45):Sprite `_type=SLICED` + spriteFrame border 已设。九宫格边距是图片 00041.png 的固有属性,10 个 Layer 共享且边距一致,已在图片资源上一次性设置。
- **协议内容是滚动长图**(729×997,高超出 720 画布):contentSize 用源值,lpos (-5.5,-208.5) 向下超出屏幕,运行时需脚本配合 ScrollView/Mask 滚动显示(或按需裁剪)。
- **Spirit253 是关闭按钮**(`CanClick=1`,源 Name 即 "Spirit253" 未改名),XML Event 空 → 脚本 `bind_button_click_event` 绑定「关闭协议弹窗」。
- 协议遮罩 `CanClick=1`,XML Event 空 → 脚本按需绑定「点击遮罩关闭」。
### 3.7 Layer612_Tips.prefab(Tips_Layer,提示弹窗)
源 Layer00612.xml:5 spirits,2 组(GroupID=32 普通提示、GroupID=89 九宫格提示)。
```
Layer612_Tips UITransform 1600×720 Widget 45
├─ group-32 UITransform 1600×720 Widget 45
│ ├─ Spirit3193 UITransform 1600×720 Widget 45
│ ├─ 提示背景 UITransform 570×105 Widget 16 (hc=-24)
│ └─ 提示文字 UITransform 84×28 Widget 16 (hc=-81) [Label]
└─ group-89 UITransform 1600×720 Widget 45
├─ Spirit3012 UITransform 100×100 Widget 16 (hc=-254) [9-slice]
└─ Spirit3013 UITransform 84×28 Widget 16 (hc=-238) [Label]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit3193 | ObjectID=3193, X=0 Y=0 W=1280 H=720, ImgResID=10, CanClick=1 | Sprite sf=`dcc4530b-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 提示背景 | ObjectID=217, X=331 Y=290 W=570 H=105, ImgResID=87 | Sprite sf=`c6295419-…@f9941` type=0 sizeMode=0;contentSize 570×105;lpos (-24, 17.5);Widget 16 hc=-24 |
| 提示文字 | ObjectID=218, X=517 Y=327 W=84 H=28, FontSize=16, FontColor=16777215, Text="提示文字" | Label string=`提示文字` fontSize=16 lineHeight=16 color=白;contentSize 84×28;lpos (-81, 19);Widget 16 hc=-81 |
| Spirit3012 | ObjectID=3012, X=336 Y=289 W=100 H=100, ImgResID=249, SpiritType=5, 边距 40/40/40/40, CanClick=1 | Sprite sf=`b44cf3e4-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 100×100;lpos (-254, 21);Widget 16 hc=-254;spriteFrame border/capInsets=[40,40,40,40] |
| Spirit3013 | ObjectID=3013, X=360 Y=336 W=84 H=28, FontSize=16, FontColor=16777215, Text="提示文字" | Label string=`提示文字` fontSize=16 lineHeight=16 color=白;contentSize 84×28;lpos (-238, 10);Widget 16 hc=-238 |
**脚本驱动要点**:
- **两组提示**:`group-32` 是普通提示(遮罩 + 570×105 底 + 文字),`group-89` 是九宫格提示(100×100 九宫格按钮 + 文字)。两组为互斥的两种提示形态,运行时按需显隐某一 group。
- **提示文字(Label)是动态文本**:两处 `_string` 都是占位 `"提示文字"`,运行时由脚本替换为实际提示内容。
- **Spirit3012 是九宫格**(源 `SpiritType=5` + `CanDragSize=1`,边距 40/40/40/40):Sprite `_type=SLICED` + spriteFrame border 已设。图片 00249.png **仅被 Layer612 使用**(无跨 Layer 共享),边距在图片资源上一次性设置。`CanDragSize=1` 表明运行时可能被脚本拉伸(九宫格保证拉伸不变形)。
- **遮罩图异于通用遮罩**:Layer612 用 ImgResID=10(00010.png 166×68)做遮罩,**不是**其它 Layer 通用的 00011.png(4×4)。若后续要统一遮罩,需在脚本/来源处确认(数据源权威,不得下游兜底)。
- Spirit3193(`CanClick=1`)、Spirit3012(`CanClick=1`)XML Event 空 → 脚本按需 `bind_button_click_event`。
### 3.8 Layer620_Record.prefab(recordLayer,记录)
源 Layer00620.xml:3 spirits,GroupID=101。
```
Layer620_Record UITransform 1600×720 Widget 45
└─ group-101 UITransform 1600×720 Widget 45
├─ Spirit3126 UITransform 1600×720 Widget 45
├─ Spirit3127 UITransform 351×359 Widget 16 (hc=0.5)
└─ Spirit3128 UITransform 65×174 Widget 16 (hc=96.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit3126 | ObjectID=3126, X=0 Y=0 W=1280 H=720, ImgResID=10, CanClick=1 | Sprite sf=`dcc4530b-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| Spirit3127 | ObjectID=3127, X=465 Y=181 W=351 H=359, ImgResID=381, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`31eeca1a-…@f9941` type=0 sizeMode=0;contentSize 351×359;lpos (0.5,-0.5);Widget 16 hc=0.5 |
| Spirit3128 | ObjectID=3128, X=704 Y=273 W=65 H=174, ImgResID=380, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`1305d4c3-…@f9941`(第 1 帧)type=0 sizeMode=0;contentSize 65×174;lpos (96.5,0);Widget 16 hc=96.5 |
**脚本驱动要点**:
- **Spirit3128 是多帧 sprite**(ImgResID=380,源 `SpiritType=3` + `Frame=1`,6 帧 `00380_1~6.png`,每帧 65×174):迁移只落第 1 帧为 spriteFrame,运行时逐帧动画需脚本循环切 spriteFrame 或加 cc.Animation(记录滚动/计数动画)。
- **Spirit3127 是记录背景**(ImgResID=381 单图 351×359):`SizeCalcMode=2` + `WidthCalcMode/HeightCalcMode=1`(随内容自适应尺寸),但源 W/H 已给出 351×359,迁移按固定 contentSize 落盘。
- 三节点均 `CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`(Spirit3126 遮罩通常「点击关闭」)。
- 遮罩用 ImgResID=10(00010.png,与 Layer612 共用),非通用遮罩 00011。
### 3.9 Layer618.prefab(Layer618,双态全屏)
源 Layer00618.xml:2 spirits,2 组(GroupID=85/86)。
```
Layer618 UITransform 1600×720 Widget 45
├─ group-85 UITransform 1600×720 Widget 45
│ └─ Spirit654 UITransform 1600×720 Widget 45
└─ group-86 UITransform 1600×720 Widget 45
└─ Spirit655 UITransform 1600×720 Widget 45 [active=false]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit654 | ObjectID=654, X=0 Y=0 W=1280 H=720, ImgResID=237, CanClick=1 | Sprite sf=`a2c1c399-…@f9941` type=0 sizeMode=0;contentSize **1600×720**(全屏拉伸);lpos (0,0);Widget 45 |
| Spirit655 | ObjectID=655, X=0 Y=0 W=1280 H=720, ImgResID=11, IsVisible=0, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45;**节点 `_active=false`**(IsVisible=0) |
**脚本驱动要点**:
- **两个互斥全屏状态**:group-85(Spirit654,00237.png 全屏背景,visible)+ group-86(Spirit655,00011.png 遮罩,IsVisible=0 hidden)。运行时脚本按需切换两 group 显隐(如「有背景」vs「纯遮罩」两态)。
- Spirit654(`CanClick=1`)、Spirit655(`CanClick=1`)XML Event 空 → 脚本按需 `bind_button_click_event`。
### 3.10 Layer603.prefab(Layer603,双帧图标)
源 Layer00603.xml:3 spirits,GroupID=107。
```
Layer603 UITransform 1600×720 Widget 45
└─ group-107 UITransform 1600×720 Widget 45
├─ Spirit3267 UITransform 1600×720 Widget 45
├─ Spirit3268 UITransform 132×156 Widget 16 (hc=-117)
└─ Spirit3269 UITransform 132×156 Widget 16 (hc=154)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit3267 | ObjectID=3267, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| Spirit3268 | ObjectID=3268, X=457 Y=345 W=132 H=156, ImgResID=439, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`b28d677c-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 132×156;lpos (-117,-63);Widget 16 hc=-117 |
| Spirit3269 | ObjectID=3269, X=728 Y=345 W=132 H=156, ImgResID=439, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`1c34b82d-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 132×156;lpos (154,-63);Widget 16 hc=154 |
**脚本驱动要点**:
- **Spirit3268 / Spirit3269 是同一图片(ImgID 439)的帧 1 / 帧 2**,并列放置(X=457 vs 728,同 Y=345)。源 `SpiritType=3` + `Frame` 指明帧号,迁移把帧 1/帧 2 分别落到两个 spriteFrame。语义疑为「两个并列图标 / 二态指示」,脚本按需切 spriteFrame 或显隐。
- 三节点均 `CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`(Spirit3267 遮罩通常「点击关闭」)。
### 3.11 Layer617_iMessage.prefab(iMessage_Layer,顶部通知横幅)
源 Layer00617.xml:4 spirits,GroupID=41。
```
Layer617_iMessage UITransform 1600×720 Widget 45
└─ group-41 UITransform 1600×720 Widget 45
├─ 即时通知背景 UITransform 1280×85 Widget 16 (hc=0)
├─ 即时通知信息内容 UITransform 27×35 Widget 16 (hc=-22.5) [Label]
├─ 即时通知图标 UITransform 57×42 Widget 16 (hc=-593.5)
└─ 即时通知关闭 UITransform 33×37 Widget 16 (hc=581.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 即时通知背景 | ObjectID=332, X=0 Y=0 W=1280 H=85, ImgResID=109, CanClick=1 | Sprite sf=`1c5e45ef-…@f9941` type=0 sizeMode=0;contentSize **1280×85**(非全屏,不拉伸 1600);lpos (0,317.5);Widget 16 hc=0 |
| 即时通知信息内容 | ObjectID=333, X=604 Y=-76 W=27 H=35, FontSize=20, FontColor=16777215, Text="小" | Label string=`小` fontSize=20 lineHeight=20 color=白;contentSize 27×35;lpos (-22.5,418.5);Widget 16 hc=-22.5 |
| 即时通知图标 | ObjectID=334, X=18 Y=23 W=57 H=42, ImgResID=110, CanClick=1 | Sprite sf=`45de5613-…@f9941` type=0 sizeMode=0;contentSize 57×42;lpos (-593.5,316);Widget 16 hc=-593.5 |
| 即时通知关闭 | ObjectID=335, X=1205 Y=25 W=33 H=37, ImgResID=111, CanClick=1 | Sprite sf=`efd5ab89-…@f9941` type=0 sizeMode=0;contentSize 33×37;lpos (581.5,316.5);Widget 16 hc=581.5 |
**脚本驱动要点**:
- **顶部通知横幅**(iMessage 通知):1280×85 横幅贴顶(lpos.y=317.5),图标左、关闭右、文本居中。横幅非全屏 720 背景,**不拉伸到 1600**,保持 1280 宽水平居中(符合「1280 UI 居中」设计)。
- **即时通知信息内容(Label)是动态文本**:`_string="小"` 是占位,运行时由脚本替换为实际通知内容。⚠️ **源 Y=-76(Top=-76)异常**:文本在源数据里位于横幅上方(lpos.y=418.5 超出屏幕顶),此值逐字复刻自源(数据源权威不兜底),运行时脚本需按实际内容重新定位。
- 即时通知关闭(`CanClick=1`)是「关闭通知」按钮,XML Event 空 → 脚本 `bind_button_click_event`。
### 3.12 Layer601.prefab(Layer601,说明弹窗)
源 Layer00601.xml:5 spirits,GroupID=102。
```
Layer601 UITransform 1600×720 Widget 45
└─ group-102 UITransform 1600×720 Widget 45
├─ Spirit3153 UITransform 1600×720 Widget 45
├─ Spirit3154 UITransform 1004×174 Widget 16 (hc=-130) [Label]
├─ Spirit3155 UITransform 145×74 Widget 16 (hc=507.5)
├─ Spirit3159 UITransform 145×74 Widget 16 (hc=507.5)
└─ Spirit3160 UITransform 85×25 Widget 16 (hc=-589.5) [Label]
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit3153 | ObjectID=3153, X=0 Y=0 W=1280 H=720, ImgResID=405, SpiritType=5(四边距全 0), CanClick=1, CanDragSize=1 | Sprite sf=`c6516e94-…@f9941` type=0 sizeMode=0;contentSize **1600×720**(全屏拉伸);lpos (0,0);Widget 45 |
| Spirit3154 | ObjectID=3154, X=8 Y=8 W=1004 H=174, FontSize=24, FontColor=15630432, Text="", WordWrap=1, LineSpace=5, CanClick=1, CanDragSize=1 | Label string=``(空) fontSize=24 lineHeight=24 color=(96,128,238,255);contentSize 1004×174;lpos (-130,265);Widget 16 hc=-130 |
| Spirit3155 | ObjectID=3155, X=1075 Y=109 W=145 H=74, ImgResID=406, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`f3f55138-…@f9941` type=0 sizeMode=0;contentSize 145×74;lpos (507.5,214);Widget 16 hc=507.5 |
| Spirit3159 | ObjectID=3159, X=1075 Y=26 W=145 H=74, ImgResID=409, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`deb92933-…@f9941` type=0 sizeMode=0;contentSize 145×74;lpos (507.5,297);Widget 16 hc=507.5 |
| Spirit3160 | ObjectID=3160, X=8 Y=184 W=85 H=25, FontSize=14, FontColor=6316128, Text="Spirit3160", CanClick=1 | Label string=`Spirit3160` fontSize=14 lineHeight=14 color=(96,96,96,255);contentSize 85×25;lpos (-589.5,163.5);Widget 16 hc=-589.5 |
**脚本驱动要点**:
- **Spirit3153 是遮罩**(源 `SpiritType=5` 但四边距全 0 → 等效普通拉伸,迁移为 SIMPLE type=0),XML Event `MouseUp=3153`(自引用)→ 语义「点击遮罩关闭该 Layer」,脚本 `bind_button_click_event`。
- **Spirit3154 是大块动态文本**(1004×174,`Text=""` 空,`WordWrap=1` 多行 + `LineSpace=5`):运行时脚本 set string(说明/公告类内容)。⚠️ 源 `LineSpace=5` ≠ `fontSize`(24),映射到 `_lineHeight` 的精确值待验证(见 5.待验证 1)。
- **Spirit3155 / Spirit3159 是右侧并列两按钮**(ImgID 406/409,同 X=1075、同 145×74,Y 差 83):语义疑为「确定/取消」或双态按钮,`CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`。
- **Spirit3160 是动态文本**(`Text="Spirit3160"` 是 ObjectName 占位,fontSize=14):运行时脚本 set string。
### 3.13 Layer608_Help.prefab(Help_Layer,帮助弹窗)
源 Layer00608.xml:7 spirits,GroupID=19。
```
Layer608_Help UITransform 1600×720 Widget 45
└─ group-19 UITransform 1600×720 Widget 45
├─ 帮助遮罩 UITransform 1600×720 Widget 45
├─ 帮助背景 UITransform 900×600 Widget 16 (hc=0) [9-slice]
├─ 帮助文字 UITransform 84×28 Widget 16 (hc=-353) [Label]
├─ 帮助标题 UITransform 510×138 Widget 16 (hc=56)
├─ Spirit693 UITransform 403×76 Widget 16 (hc=0.5)
├─ 帮助内容 UITransform 729×1122 Widget 16 (hc=4.5)
└─ 关闭帮助 UITransform 83×84 Widget 16 (hc=418.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 帮助遮罩 | ObjectID=141, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 帮助背景 | ObjectID=142, X=190 Y=70 W=900 H=600, ImgResID=2, SpiritType=5, 边距 250/200/346/245, CanClick=1, CanDragSize=1 | Sprite sf=`8eb7acc3-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 900×600;lpos (0,-10);Widget 16 hc=0;border 待补(见要点) |
| 帮助文字 | ObjectID=143, X=245 Y=-92 W=84 H=28, FontSize=16, FontColor=1059174, Text="帮助文字", CanClick=1 | Label string=`帮助文字` fontSize=16 lineHeight=16 color=(102,41,16,255);contentSize 84×28;lpos (-353,438);Widget 16 hc=-353 |
| 帮助标题 | ObjectID=144, X=441 Y=-251 W=510 H=138, ImgResID=40, CanClick=1 | Sprite sf=`05398908-…@f9941` type=0 sizeMode=0;contentSize 510×138;lpos (56,542);Widget 16 hc=56 |
| Spirit693 | ObjectID=693, X=439 Y=82 W=403 H=76, ImgResID=6, SpiritType=3, Frame=4, CanClick=1 | Sprite sf=`317bd27a-…@f9941`(第 4 帧)type=0 sizeMode=0;contentSize 403×76;lpos (0.5,240);Widget 16 hc=0.5 |
| 帮助内容 | ObjectID=290, X=280 Y=170 W=729 H=1122, ImgResID=101, CanClick=1 | Sprite sf=`bb84a2a5-…@f9941` type=0 sizeMode=0;contentSize 729×1122;lpos (4.5,-371);Widget 16 hc=4.5 |
| 关闭帮助 | ObjectID=47, X=1017 Y=60 W=83 H=84, ImgResID=33, CanClick=1 | Sprite sf=`eedce6d7-…@f9941` type=0 sizeMode=0;contentSize 83×84;lpos (418.5,258);Widget 16 hc=418.5 |
**脚本驱动要点**:
- **帮助背景是九宫格**(源 `SpiritType=5`,边距 250/200/346/245):Sprite `_type=SLICED` 已设,但 **spriteFrame border 尚未设置**(见 1.9「结构优先,边距后补」)。⚠️ 图片 00002.png 被 7 个 Layer 以 **4 组不同边距** 复用(本层 250/200/346/245 是其中一组),单一 `.meta` border 无法同时服务;后续「9-slice 补边距」任务需为 (图片,边距) 组合各建 spriteFrame 副本再回填 border。
- **帮助文字(Label)是动态文本**:`_string="帮助文字"` 是占位(= ObjectName),运行时由脚本替换为实际帮助说明。⚠️ 源 Y=-92(Top=-92)异常,lpos.y=438 已超出屏幕顶(源数据逐字复刻,不兜底),运行时脚本按实际内容重新定位。
- **帮助内容是滚动长图**(729×1122,高超出 720 画布):contentSize 用源值,lpos.y=-371 向下超出屏幕,运行时需脚本配合 ScrollView/Mask 滚动。
- **Spirit693 是多帧 sprite 的第 4 帧**(ImgID=6,`SpiritType=3` + `Frame=4`,5 帧 `00006_1~5.png`,每帧 403×76):迁移落第 4 帧,运行时按需切帧。
- **关闭帮助(Spirit47)是关闭按钮**(`CanClick=1`),XML Event 空 → 脚本 `bind_button_click_event` 绑定「关闭帮助弹窗」。帮助遮罩(`CanClick=1`)→ 点击遮罩关闭(按需绑定)。帮助背景/标题/Spirit693/帮助内容 均 `CanClick=1`(装饰,按需绑定)。
### 3.14 Layer609_Setting.prefab(Setting_Layer,设置弹窗)
源 Layer00609.xml:15 spirits,GroupID=6。
```
Layer609_Setting UITransform 1600×720 Widget 45
└─ group-6 UITransform 1600×720 Widget 45
├─ 设置遮罩 UITransform 1600×720 Widget 45
├─ 设置背景 UITransform 730×550 Widget 16 (hc=0) [9-slice]
├─ 设置标题 UITransform 250×90 Widget 16 (hc=-109)
├─ Spirit688 UITransform 403×76 Widget 16 (hc=8.5)
├─ 音乐底 UITransform 170×60 Widget 16 (hc=149)
├─ 音效底 UITransform 170×60 Widget 16 (hc=149)
├─ 退出登录 UITransform 280×93 Widget 16 (hc=1)
├─ 音乐图标 UITransform 206×75 Widget 16 (hc=-140)
├─ 申请解散 UITransform 240×80 Widget 16 (hc=-159)
├─ 邀请好友 UITransform 240×80 Widget 16 (hc=171)
├─ Spirit356 UITransform 206×75 Widget 16 (hc=-140)
├─ Spirit357 UITransform 170×60 Widget 16 (hc=149)
├─ 音效图标 UITransform 206×75 Widget 16 (hc=-140)
├─ Spirit387 UITransform 206×75 Widget 16 (hc=-140)
└─ Spirit388 UITransform 170×60 Widget 16 (hc=149)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| 设置遮罩 | ObjectID=42, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| 设置背景 | ObjectID=41, X=275 Y=85 W=730 H=550, ImgResID=2, SpiritType=5, 边距 100/134/100/135, CanClick=1, CanDragSize=1 | Sprite sf=`8eb7acc3-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 730×550;lpos (0,0);Widget 16 hc=0;border 待补(见要点) |
| 设置标题 | ObjectID=69, X=406 Y=-318 W=250 H=90, ImgResID=48, CanClick=1 | Sprite sf=`7c8eca87-…@f9941` type=0 sizeMode=0;contentSize 250×90;lpos (-109,633);Widget 16 hc=-109 |
| Spirit688 | ObjectID=688, X=447 Y=97 W=403 H=76, ImgResID=52, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`d22e8d18-…@f9941` type=0 sizeMode=0;contentSize 403×76;lpos (8.5,225);Widget 16 hc=8.5 |
| 音乐底 | ObjectID=43, X=704 Y=190 W=170 H=60, ImgResID=30, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`0660c388-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 170×60;lpos (149,140);Widget 16 hc=149 |
| 音效底 | ObjectID=44, X=704 Y=276 W=170 H=60, ImgResID=30, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`0660c388-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 170×60;lpos (149,54);Widget 16 hc=149 |
| 退出登录 | ObjectID=58, X=501 Y=519 W=280 H=93, ImgResID=178, SpiritType=3, Frame=5, CanClick=1 | Sprite sf=`105a605a-…@f9941`(帧 5)type=0 sizeMode=0;contentSize 280×93;lpos (1,-205.5);Widget 16 hc=1 |
| 音乐图标 | ObjectID=694, X=397 Y=186 W=206 H=75, ImgResID=29, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`9239dc9e-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 206×75;lpos (-140,136.5);Widget 16 hc=-140 |
| 申请解散 | ObjectID=181, X=361 Y=524 W=240 H=80, ImgResID=178, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`f639fcfd-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 240×80;lpos (-159,-204);Widget 16 hc=-159 |
| 邀请好友 | ObjectID=182, X=691 Y=524 W=240 H=80, ImgResID=178, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`003dd305-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 240×80;lpos (171,-204);Widget 16 hc=171 |
| Spirit356 | ObjectID=356, X=397 Y=356 W=206 H=75, ImgResID=29, SpiritType=3, Frame=3, CanClick=1 | Sprite sf=`f40aef7e-…@f9941`(帧 3)type=0 sizeMode=0;contentSize 206×75;lpos (-140,-33.5);Widget 16 hc=-140 |
| Spirit357 | ObjectID=357, X=704 Y=362 W=170 H=60, ImgResID=30, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`0660c388-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 170×60;lpos (149,-32);Widget 16 hc=149 |
| 音效图标 | ObjectID=695, X=397 Y=271 W=206 H=75, ImgResID=29, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`9ee042b7-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 206×75;lpos (-140,51.5);Widget 16 hc=-140 |
| Spirit387 | ObjectID=387, X=397 Y=441 W=206 H=75, ImgResID=29, SpiritType=3, Frame=4, CanClick=1 | Sprite sf=`6be9d68d-…@f9941`(帧 4)type=0 sizeMode=0;contentSize 206×75;lpos (-140,-118.5);Widget 16 hc=-140 |
| Spirit388 | ObjectID=388, X=704 Y=443 W=170 H=60, ImgResID=30, SpiritType=3, Frame=3, CanClick=1 | Sprite sf=`0660c388-…@f9941`(帧 3 → 循环回绕帧 1)type=0 sizeMode=0;contentSize 170×60;lpos (149,-113);Widget 16 hc=149 |
**脚本驱动要点**:
- **设置背景是九宫格**(源 `SpiritType=5`,边距 100/134/100/135):Sprite `_type=SLICED` 已设,spriteFrame border 待补(见 1.9「结构优先,边距后补」)。图片 00002.png 被 7 Layer 以 4 组边距复用,本层是其中一组(100/134/100/135),后续补边距需为 (图片,边距) 组合各建 spriteFrame 副本。
- **三组多帧 sprite**:ImgID=29(4 帧 206×75)音乐图标/音效图标/Spirit356/Spirit387 用帧 1/2/3/4;ImgID=30(2 帧 170×60)音乐底/音效底/Spirit357 用帧 1;ImgID=178(5 帧 280×93)退出登录/申请解散/邀请好友 用帧 5/1/2。
- **Spirit388 Frame=3 循环回绕**:ImgID=30 仅 2 帧,源 `Frame=3` 按 `((3-1) % 2) + 1 = 1` 回绕到第 1 帧(见 1.10)。这不是数据错误,原工程引擎如此渲染。
- **设置遮罩是点击关闭**:XML Event `MouseUp=42`(自引用)→ 点击遮罩关闭该 Layer,脚本 `bind_button_click_event`。
- **Spirit387 是自引用点击**:XML Event `MouseUp=387`(自引用)→ 语义「点击该图标关闭/切换」,脚本 `bind_button_click_event`。
- 其余按钮/图标(音乐图标、音效图标、音乐底、音效底、退出登录、申请解散、邀请好友、Spirit356/357/388、Spirit688、设置标题)均 `CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`。
- **设置标题图片 181×70 拉伸到 250×90**:源 W/H=250×90 但图片 00048.png 实际 181×70,迁移 contentSize=源值 250×90(引擎拉伸渲染,逐字复刻源布局)。
### 3.15 Layer602_inputPannel.prefab(inputPannel,输入面板)
源 Layer00602.xml:19 spirits,GroupID=87。
```
Layer602_inputPannel UITransform 1600×720 Widget 45
└─ group-87 UITransform 1600×720 Widget 45
├─ Spirit659 UITransform 1600×720 Widget 45
├─ Spirit660 UITransform 1229×700 Widget 16 (hc=-2.5) [9-slice]
├─ Spirit661 UITransform 333×110 Widget 16 (hc=0.5)
├─ Spirit662 UITransform 333×110 Widget 16 (hc=-332.5)
├─ Spirit663 UITransform 333×110 Widget 16 (hc=0.5)
├─ Spirit664 UITransform 333×110 Widget 16 (hc=333.5)
├─ Spirit665 UITransform 333×110 Widget 16 (hc=-332.5)
├─ Spirit666 UITransform 333×110 Widget 16 (hc=0.5)
├─ Spirit667 UITransform 333×110 Widget 16 (hc=333.5)
├─ Spirit668 UITransform 333×110 Widget 16 (hc=-332.5)
├─ Spirit669 UITransform 333×110 Widget 16 (hc=0.5)
├─ Spirit670 UITransform 333×110 Widget 16 (hc=333.5)
├─ Spirit671 UITransform 333×110 Widget 16 (hc=-332.5)
├─ Spirit3000 UITransform 333×110 Widget 16 (hc=333.5)
├─ Spirit3001 UITransform 18×53 Widget 16 (hc=-160) [Label]
├─ Spirit3002 UITransform 897×90 Widget 16 (hc=-21.5) [9-slice]
├─ Spirit3003 UITransform 51×65 Widget 16 (hc=-158.5)
├─ Spirit3004 UITransform 83×84 Widget 16 (hc=570.5)
└─ Spirit3217 UITransform 135×80 Widget 16 (hc=520.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit659 | ObjectID=659, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| Spirit660 | ObjectID=660, X=23 Y=10 W=1229 H=700, ImgResID=41, SpiritType=5, 边距 55/45/55/45, CanClick=1, CanDragSize=1 | Sprite sf=`3e7492cb-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 1229×700;lpos (-2.5,0);Widget 16 hc=-2.5;border 待补(见要点) |
| Spirit661 | ObjectID=661, X=474 Y=565 W=333 H=110, ImgResID=241, SpiritType=3, Frame=11, CanClick=1 | Sprite sf=`8f77b555-…@f9941`(帧 11)type=0 sizeMode=0;contentSize 333×110;lpos (0.5,-260);Widget 16 hc=0.5 |
| Spirit662 | ObjectID=662, X=141 Y=235 W=333 H=110, ImgResID=241, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`237c724e-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 333×110;lpos (-332.5,70);Widget 16 hc=-332.5 |
| Spirit663 | ObjectID=663, X=474 Y=235 W=333 H=110, ImgResID=241, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`c4fc1e99-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 333×110;lpos (0.5,70);Widget 16 hc=0.5 |
| Spirit664 | ObjectID=664, X=807 Y=235 W=333 H=110, ImgResID=241, SpiritType=3, Frame=3, CanClick=1 | Sprite sf=`40c89d11-…@f9941`(帧 3)type=0 sizeMode=0;contentSize 333×110;lpos (333.5,70);Widget 16 hc=333.5 |
| Spirit665 | ObjectID=665, X=141 Y=345 W=333 H=110, ImgResID=241, SpiritType=3, Frame=4, CanClick=1 | Sprite sf=`1ed1717f-…@f9941`(帧 4)type=0 sizeMode=0;contentSize 333×110;lpos (-332.5,-40);Widget 16 hc=-332.5 |
| Spirit666 | ObjectID=666, X=474 Y=345 W=333 H=110, ImgResID=241, SpiritType=3, Frame=5, CanClick=1 | Sprite sf=`ca157e80-…@f9941`(帧 5)type=0 sizeMode=0;contentSize 333×110;lpos (0.5,-40);Widget 16 hc=0.5 |
| Spirit667 | ObjectID=667, X=807 Y=345 W=333 H=110, ImgResID=241, SpiritType=3, Frame=6, CanClick=1 | Sprite sf=`2dac5ee2-…@f9941`(帧 6)type=0 sizeMode=0;contentSize 333×110;lpos (333.5,-40);Widget 16 hc=333.5 |
| Spirit668 | ObjectID=668, X=141 Y=455 W=333 H=110, ImgResID=241, SpiritType=3, Frame=7, CanClick=1 | Sprite sf=`b5d46f14-…@f9941`(帧 7)type=0 sizeMode=0;contentSize 333×110;lpos (-332.5,-150);Widget 16 hc=-332.5 |
| Spirit669 | ObjectID=669, X=474 Y=455 W=333 H=110, ImgResID=241, SpiritType=3, Frame=8, CanClick=1 | Sprite sf=`2ff18c2d-…@f9941`(帧 8)type=0 sizeMode=0;contentSize 333×110;lpos (0.5,-150);Widget 16 hc=0.5 |
| Spirit670 | ObjectID=670, X=807 Y=455 W=333 H=110, ImgResID=241, SpiritType=3, Frame=9, CanClick=1 | Sprite sf=`551ad91e-…@f9941`(帧 9)type=0 sizeMode=0;contentSize 333×110;lpos (333.5,-150);Widget 16 hc=333.5 |
| Spirit671 | ObjectID=671, X=141 Y=565 W=333 H=110, ImgResID=241, SpiritType=3, Frame=10, CanClick=1 | Sprite sf=`415a30af-…@f9941`(帧 10)type=0 sizeMode=0;contentSize 333×110;lpos (-332.5,-260);Widget 16 hc=-332.5 |
| Spirit3000 | ObjectID=3000, X=807 Y=565 W=333 H=110, ImgResID=241, SpiritType=3, Frame=12, CanClick=1 | Sprite sf=`27d606ff-…@f9941`(帧 12)type=0 sizeMode=0;contentSize 333×110;lpos (333.5,-260);Widget 16 hc=333.5 |
| Spirit3001 | ObjectID=3001, X=471 Y=44 W=18 H=53, FontSize=30, FontColor=1854069, FontColorA=255, Text="s", CanClick=1 | Label string=`s` fontSize=30 lineHeight=30 color=(117,74,28,255);contentSize 18×53;lpos (-160,289.5);Widget 16 hc=-160 |
| Spirit3002 | ObjectID=3002, X=170 Y=122 W=897 H=90, ImgResID=239, SpiritType=5, 边距 60/40/60/40, CanClick=1, CanDragSize=1 | Sprite sf=`32739fb1-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 897×90;lpos (-21.5,193);Widget 16 hc=-21.5;border 待补(见要点) |
| Spirit3003 | ObjectID=3003, X=456 Y=135 W=51 H=65, ImgResID=242, SpiritType=4(FrameText), FrameText=1, CanClick=1 | Sprite sf=`52d93534-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 51×65;lpos (-158.5,192.5);Widget 16 hc=-158.5 |
| Spirit3004 | ObjectID=3004, X=1169 Y=8 W=83 H=84, ImgResID=33, CanClick=1 | Sprite sf=`eedce6d7-…@f9941` type=0 sizeMode=0;contentSize 83×84;lpos (570.5,310);Widget 16 hc=570.5 |
| Spirit3217 | ObjectID=3217, X=1093 Y=132 W=135 H=80, ImgResID=188, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`5209df7b-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 135×80;lpos (520.5,188);Widget 16 hc=520.5 |
**脚本驱动要点**:
- **12 键数字键盘**:ImgID 241 是 12 帧 333×110 图片(整图 3 列×4 行),Spirit661~671 + Spirit3000 共 12 个键,Frame=1~12(帧号不越界 `frame_all=12`,直接对号落盘)。布局三列 X=141/474/807、四行 Y=235/345/455/565,**帧号按从左到右、从上到下 1..12**:帧 1(141,235)、帧 2(474,235)、帧 3(807,235)|帧 4(141,345)、帧 5(474,345)、帧 6(807,345)|帧 7(141,455)、帧 8(474,455)、帧 9(807,455)|帧 10(141,565)、帧 11(474,565)、帧 12(807,565)。脚本按位置绑定各键回调,读取对应键值(数字 0-9 + 特殊键,具体语义由子游戏逻辑定)。
- **Spirit660 / Spirit3002 是九宫格**(源 `SpiritType=5`,边距分别 55/45/55/45 与 60/40/60/40):Sprite `_type=SLICED` 已设,spriteFrame border 待补(见 1.9「结构优先,边距后补」)。图片 00041.png(边框 55/45/55/45,与 Layer10_Protol 一致)、00239.png(边框 60/40/60/40,仅 Layer602 使用)。
- **Spirit3001 是输入内容显示文本**(Label,`Text="s"` 占位,fontSize=30,FontColor=1854069=0x1C4A75→RGB(117,74,28)):运行时脚本 set string 显示当前输入内容。
- **Spirit3003 是光标**(源 `SpiritType=4` FrameText,ImgID 242 是 10 帧 51×65 图片,`FrameText=1` 用帧 1):光标闪烁动画需脚本切 spriteFrame(10 帧)或按需显隐。
- **Spirit3217 是删除键**(ImgID 188 帧 2,135×80,`CanClick=1`),XML Event 空 → 脚本 `bind_button_click_event`(退格删除)。
- **Spirit3004 是关闭按钮**(ImgID 33,83×84,`CanClick=1`),XML Event 空 → 脚本 `bind_button_click_event` 绑定「关闭输入面板」。
- **Spirit660 背景自引用点击**:XML Event `MouseUp=660`(自引用)→ 点击背景关闭输入面板,脚本 `bind_button_click_event`。
- **Spirit670(帧 9,X=807/Y=455 右下)自引用点击**:XML Event `MouseUp=670`(自引用)→ 点击该键关闭(疑「确定/OK」键),脚本 `bind_button_click_event`。
- 其余 11 个数字键均 `CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`。
---
### 3.16 Layer606_Apply.prefab(Apply_Layer,投票解散)
源 Layer00606.xml:31 spirits,GroupID=29 + 32。
```
Layer606_Apply (root 纯空节点)
├─ group-29 (纯空节点)
│ ├─ Spirit189 UITransform 1600×720 Widget 45
│ ├─ Spirit192 UITransform 680×550 Widget 16 (hc=-32) [9-slice]
│ ├─ Spirit214 UITransform 620×360 Widget 16 (hc=-32) [9-slice]
│ ├─ Spirit190 UITransform 250×90 Widget 16 (hc=-33)
│ ├─ Spirit191 UITransform 76×25 Widget 16 (hc=-265) [Label]
│ ├─ Spirit201 UITransform 157×74 Widget 16 (hc=-178.5)
│ ├─ Spirit202 UITransform 157×74 Widget 16 (hc=122.5)
│ ├─ Spirit166~175 UITransform 38×25 Widget 16 (hc=-287) [Label×10]
│ ├─ Spirit264~273 UITransform 38×25 Widget 16 (hc=-224) [Label×10]
│ ├─ Spirit358 UITransform 125×33 Widget 16 (hc=-34.5)
│ ├─ Spirit369 UITransform 114×25 Widget 16 (hc=-132) [Label]
│ └─ Spirit222 UITransform 30×30 Widget 16 (hc=202) [FrameText]
└─ group-32 (纯空节点)
└─ Spirit223 UITransform 292×102 Widget 16 (hc=-33)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit189 | ObjectID=189, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| Spirit192 | ObjectID=192, X=268 Y=83 W=680 H=550, ImgResID=41, SpiritType=5, 边距 55/45/55/45, CanClick=1 | Sprite sf=`3e7492cb-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 680×550;lpos (-32,2);Widget 16 hc=-32;border 待补 |
| Spirit214 | ObjectID=214, X=298 Y=156 W=620 H=360, ImgResID=42, SpiritType=5, 边距 53/48/53/48, CanClick=1 | Sprite sf=`34daf5f4-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 620×360;lpos (-32,24);Widget 16 hc=-32;border 待补 |
| Spirit190 | ObjectID=190, X=482 Y=58 W=250 H=90, ImgResID=48, CanClick=1 | Sprite sf=`7c8eca87-…@f9941` type=0 sizeMode=0;contentSize 250×90;lpos (-33,257);Widget 16 hc=-33 |
| Spirit191 | ObjectID=191, X=337 Y=177 W=76 H=25, FontSize=14, FontColor=0, Text="投票文字", CanClick=1 | Label string=`投票文字` fontSize=14 lineHeight=14 color=(0,0,0,255);contentSize 76×25;lpos (-265,170.5);Widget 16 hc=-265 |
| Spirit201 | ObjectID=201, X=383 Y=536 W=157 H=74, ImgResID=180, SpiritType=3, Frame=1, CanClick=1 | Sprite sf=`c3e076d4-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 157×74;lpos (-178.5,-213);Widget 16 hc=-178.5 |
| Spirit202 | ObjectID=202, X=684 Y=536 W=157 H=74, ImgResID=180, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`50fe4e5c-…@f9941`(帧 2)type=0 sizeMode=0;contentSize 157×74;lpos (122.5,-213);Widget 16 hc=122.5 |
| Spirit166~175 | ObjectID=166~175, X=334 Y=224~539(step 35) W=38 H=25, FontSize=14, FontColor=0, Text="等待" | Label string=`等待` fontSize=14 lineHeight=14 color=(0,0,0,255);contentSize 38×25;lpos.x=-287 hc=-287;lpos.y=123.5→-191.5 (step -35) |
| Spirit264~273 | ObjectID=264~273, X=397 Y=222~537(step 35) W=38 H=25, FontSize=14, FontColor=0, Text="昵称" | Label string=`昵称` fontSize=14 lineHeight=14 color=(0,0,0,255);contentSize 38×25;lpos.x=-224 hc=-224;lpos.y=125.5→-189.5 (step -35) |
| Spirit358 | ObjectID=358, X=543 Y=79 W=125 H=33, ImgResID=89, SpiritType=3, Frame=2, CanClick=1 | Sprite sf=`b7e97f28-…@f9941` type=0 sizeMode=0;contentSize 125×33;lpos (-34.5,264.5);Widget 16 hc=-34.5(源 Frame=2 但 `frame_all=1` 循环回绕帧 1) |
| Spirit369 | ObjectID=369, X=451 Y=468 W=114 H=25, FontSize=14, FontColor=0, Text="解散提示文字", CanClick=1 | Label string=`解散提示文字` fontSize=14 lineHeight=14 color=(0,0,0,255);contentSize 114×25;lpos (-132,-120.5);Widget 16 hc=-132 |
| Spirit222 | ObjectID=222, X=827 Y=107 W=30 H=30, ImgResID=46, SpiritType=4(FrameText), FrameText=1, CanClick=1 | Sprite sf=`f3f3eadc-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 30×30;lpos (202,238);Widget 16 hc=202 |
| Spirit223 | ObjectID=223, X=461 Y=518 W=292 H=102, ImgResID=34, SpiritType=3, Frame=1, CanClick=1, group=32 | Sprite sf=`c8cc3782-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 292×102;lpos (-33,-209);Widget 16 hc=-33 |
**脚本驱动要点**:
- **Spirit166~175 / Spirit264~273 是动态列表**(各 10 个 Label,`Text="等待"`/`"昵称"` 占位,fontSize=14、FontColor=0 黑):运行时脚本按投票玩家列表 set string 填充(等待侧 + 昵称侧各最多 10 人)。
- **Spirit222 是投票倒计时**(源 `SpiritType=4` FrameText,ImgID 46 是 10 帧 30×30 图片,`FrameText=1` 用帧 1):运行时按剩余秒数切 spriteFrame(帧 1~10 对应倒计时数字)。
- **Spirit201 / Spirit202 是同意 / 拒绝按钮**(ImgID 180 帧 1/2,157×74,`CanClick=1`、XML Event 空)→ 脚本 `bind_button_click_event` 绑定投票同意/拒绝。
- **Spirit223 是投票结果确认键**(group-32,ImgID 34 帧 1,292×102,`CanClick=1`、XML Event 空)→ 脚本 `bind_button_click_event` 绑定确认。
- **Spirit189 遮罩点击关闭**(`CanClick=1`、XML Event 空)→ 脚本按需绑定点击关闭投票弹窗。
- **Spirit192 / Spirit214 是九宫格**(源 `SpiritType=5`,边距分别 55/45/55/45 与 53/48/53/48):Sprite `_type=SLICED` 已设,spriteFrame border 待补(见 1.9)。
---
### 3.17 Layer607_Cal.prefab(Cal_Layer,计算器)
源 Layer00607.xml:20 spirits,GroupID=78 + 79。**全部 Sprite,无 Text/Label**(计算器为纯图形 + 帧文字光标)。
```
Layer607_Cal (root 纯空节点)
├─ group-78 (纯空节点)
│ ├─ Spirit283 UITransform 202×84 Widget 16 (hc=-88) [9-slice]
│ └─ Spirit370 UITransform 28×37 Widget 16 (hc=-22) [FrameText]
└─ group-79 (纯空节点)
├─ Spirit371 UITransform 1600×720 Widget 45
├─ Spirit374 UITransform 700×520 Widget 16 (hc=11) [9-slice]
├─ Spirit372 UITransform 309×110 Widget 16 (hc=-87.5)
├─ Spirit373 UITransform 36×47 Widget 16 (hc=-212) [FrameText]
├─ Spirit391 UITransform 122×68 Widget 16 (hc=211)
├─ Spirit392~403 UITransform 131×77 Widget 16 (hc=-186.5/-55.5/75.5/206.5)
└─ Spirit375 UITransform 83×84 Widget 16 (hc=349.5)
```
| 节点 | 源字段 | 组件属性 |
|---|---|---|
| Spirit283 | ObjectID=283, X=451 Y=605 W=202 H=84, ImgResID=185, SpiritType=5, 边距 153/0/50/0, CanClick=1 | Sprite sf=`1147e0c6-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 202×84;lpos (-88,-287);Widget 16 hc=-88;border 待补 |
| Spirit370 | ObjectID=370, X=604 Y=626 W=28 H=37, ImgResID=198, SpiritType=4(FrameText), FrameText=1, CanClick=1 | Sprite sf=`1594ca3e-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 28×37;lpos (-22,-284.5);Widget 16 hc=-22 |
| Spirit371 | ObjectID=371, X=0 Y=0 W=1280 H=720, ImgResID=11, CanClick=1 | Sprite sf=`eabf148a-…@f9941` type=0 sizeMode=0;contentSize **1600×720**;lpos (0,0);Widget 45 |
| Spirit374 | ObjectID=374, X=301 Y=85 W=700 H=520, ImgResID=41, SpiritType=5, 边距 55/45/55/45, CanClick=1 | Sprite sf=`3e7492cb-…@f9941` **type=1 (SLICED)** sizeMode=0;contentSize 700×520;lpos (11,15);Widget 16 hc=11;border 待补 |
| Spirit372 | ObjectID=372, X=398 Y=142 W=309 H=110, ImgResID=184, CanClick=1 | Sprite sf=`f2db27eb-…@f9941` type=0 sizeMode=0;contentSize 309×110;lpos (-87.5,163);Widget 16 hc=-87.5 |
| Spirit373 | ObjectID=373, X=410 Y=198 W=36 H=47, ImgResID=183, SpiritType=4(FrameText), FrameText=1, CanClick=1 | Sprite sf=`13820b69-…@f9941`(帧 1)type=0 sizeMode=0;contentSize 36×47;lpos (-212,138.5);Widget 16 hc=-212 |
| Spirit391 | ObjectID=391, X=790 Y=184 W=122 H=68, ImgResID=186, SpiritType=3, Frame=1, CanClick=1, MouseUp=391 | Sprite sf=`04de2ca1-…@f9941` type=0 sizeMode=0;contentSize 122×68;lpos (211,142);Widget 16 hc=211 |
| Spirit392~403 | ObjectID=392~403, ImgResID=182, SpiritType=3, Frame=10/1/2/…/12, CanClick=1 | Sprite sf=`00182_XX…@f9941` type=0 sizeMode=0;contentSize 131×77;lpos/hc 见下表 |
| Spirit375 | ObjectID=375, X=948 Y=61 W=83 H=84, ImgResID=33, CanClick=1 | Sprite sf=`eedce6d7-…@f9941` type=0 sizeMode=0;contentSize 83×84;lpos (349.5,257);Widget 16 hc=349.5 |
**12 键布局(ImgID 182,帧号按从左到右、从上到下 1..12)**:
| Spirit | 帧 | 源 (X,Y) | lpos | hc |
|---|---|---|---|---|
| Spirit393 | 1 | (388,291) | (-186.5,30.5) | -186.5 |
| Spirit394 | 2 | (519,291) | (-55.5,30.5) | -55.5 |
| Spirit395 | 3 | (650,291) | (75.5,30.5) | 75.5 |
| Spirit396 | 4 | (781,291) | (206.5,30.5) | 206.5 |
| Spirit397 | 5 | (388,368) | (-186.5,-46.5) | -186.5 |
| Spirit398 | 6 | (519,368) | (-55.5,-46.5) | -55.5 |
| Spirit399 | 7 | (650,368) | (75.5,-46.5) | 75.5 |
| Spirit400 | 8 | (781,368) | (206.5,-46.5) | 206.5 |
| Spirit401 | 9 | (388,445) | (-186.5,-123.5) | -186.5 |
| Spirit392 | 10 | (519,445) | (-55.5,-123.5) | -55.5 |
| Spirit402 | 11 | (650,445) | (75.5,-123.5) | 75.5 |
| Spirit403 | 12 | (781,445) | (206.5,-123.5) | 206.5 |
**脚本驱动要点**:
- **12 键数字键盘**:ImgID 182 是 12 帧 131×77 图片(整图 4 列×3 行),Spirit392~403 共 12 键,Frame=1~12(帧号不越界 `frame_all=12`,直接对号落盘)。布局四列 X=388/519/650/781、三行 Y=291/368/445。脚本按位置绑定各键回调,读取对应键值(数字 0-9 + 运算符,具体语义由计算器逻辑定)。
- **Spirit283 是输入/结果显示框**(源 `SpiritType=5` 九宫格,边距 153/0/50/0,ImgID 185):Sprite `_type=SLICED` 已设,显示内容由脚本挂 Label 或按需绘制,spriteFrame border 待补。
- **Spirit370 / Spirit373 是光标**(源 `SpiritType=4` FrameText,ImgID 198/183 各 11 帧,`FrameText=1` 用帧 1):光标闪烁动画需脚本切 spriteFrame(11 帧)或按需显隐。
- **Spirit391 是关闭按钮**(ImgID 186,122×68,`MouseUp=391` 自引用)→ 脚本 `bind_button_click_event` 绑定「关闭计算器」。
- **Spirit375 是关闭图标**(ImgID 33,83×84,`CanClick=1`、XML Event 空)→ 脚本按需绑定。
- **Spirit371 遮罩点击关闭**(`CanClick=1`、XML Event 空)→ 脚本按需绑定点击关闭计算器。
---
### 3.18 Layer4_MainMenu.prefab(MainMenu_Layer,主大厅)
源 Layer00004.xml:32 spirits,GroupID=3。这是**游戏主大厅层**(核心入口),34 节点(1 root + 1 group-3 + 32 children),全部 `CanClick=1`。
```
Layer4_MainMenu UITransform 1600×720 Widget 45
└─ group-3 UITransform 1600×720 Widget 45
├─ Spirit4 主界面背景 UITransform 1600×720 Widget 45(全屏拉伸)
├─ 20 个 Sprite UITransform 各自 W×H Widget 16(功能按钮/视觉图)
└─ 11 个 Label UITransform 各自 W×H Widget 16(文字)
```
**Sprite(21 个)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit4 | 主界面背景 | Img=1,1280×720,lpos(0,0) | Sprite sf=`a8236f97-…` type=0 sizeMode=0;contentSize **1600×720**;Widget 45 |
| Spirit679 | Spirit679 | Img=59,337×441,lpos(-310.5,-28.5) | Sprite sf=`4f725497-…`;contentSize 337×441;Widget 16 |
| Spirit11 | 创建房间 | Img=12,298×334,lpos(327,26) | Sprite sf=`a3b75089-…`;contentSize 298×334;Widget 16 |
| Spirit7 | 设置 | Img=14 帧11,150×70,lpos(357,-317) | Sprite sf=`434102b8-…`;contentSize 150×70;Widget 16 |
| Spirit479 | Spirit479 | Img=350 帧1,55×50,lpos(-256.5,239) | Sprite sf=`151439f3-…`;contentSize 55×50;Widget 16 |
| Spirit12 | 加入房间 | Img=232,203×86,lpos(374.5,141) | Sprite sf=`5e1f37f2-…`;contentSize 203×86;Widget 16 |
| Spirit13 | 战绩 | Img=14 帧4,150×70,lpos(175,-317) | Sprite sf=`57e8e036-…`;contentSize 150×70;Widget 16 |
| Spirit14 | 分享 | Img=14 帧2,150×70,lpos(-189,-317) | Sprite sf=`467e62c4-…`;contentSize 150×70;Widget 16 |
| Spirit219 | 公告底 | Img=248,645×39,lpos(92.5,237.5) | Sprite sf=`df4db047-…`;contentSize 645×39;Widget 16 |
| Spirit339 | 微信公众号 | Img=10,166×40,lpos(-221,-592) | Sprite sf=`dcc4530b-…`;contentSize 166×40;Widget 16 |
| Spirit17 | 任务 | Img=14 帧3,150×70,lpos(-7,-317) | Sprite sf=`3a6b2c60-…`;contentSize 150×70;Widget 16 |
| Spirit483 | 比赛场 | Img=199,328×224,lpos(18,-136) | Sprite sf=`b4250870-…`;contentSize 328×224;Widget 16 |
| Spirit568 | 星星场平台 | Img=214,329×224,lpos(18.5,81) | Sprite sf=`b8eeb06c-…`;contentSize 329×224;Widget 16 |
| Spirit3016 | 商城按钮 | Img=252,160×100,lpos(-541,-301) | Sprite sf=`c80ee17e-…`;contentSize 160×100;Widget 16 |
| Spirit3120 | 更多 | Img=14 帧1,150×70,lpos(-371,-317) | Sprite sf=`04f4d29d-…`;contentSize 150×70;Widget 16 |
| Spirit76 | 二维码 | Img=351,175×118,lpos(548.5,-298) | Sprite sf=`5d8d62a3-…`;contentSize 175×118;Widget 16 |
| Spirit3018 | 福袋 | Img=253,94×99,lpos(560,122.5) | Sprite sf=`a8b9e254-…`;contentSize 94×99;Widget 16 |
| Spirit99 | 房间列表按钮 | Img=15,46×195,lpos(-617,-14.5) | Sprite sf=`e3425723-…`;contentSize 46×195;Widget 16 |
| Spirit16 | 广告 | Img=245,258×21(9-slice 1/1/1/1),lpos(-311,-185.5) | Sprite sf=`f76d6d83-…` type=SLICED;contentSize 258×21;Widget 16 |
| Spirit3139 | Spirit3139 | Img=396,298×113,lpos(327,-191.5) | Sprite sf=`5b2a27a3-…`;contentSize 298×113;Widget 16 |
| Spirit234 | 更多按钮 | Img=348,80×80,lpos(-585,316) | Sprite sf=`79283b71-…`;contentSize 80×80;Widget 16 |
**Label(11 个)**:
| 节点 | 名称 | 源字段(Text/字号/颜色,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit157 | 房卡数量 | "房卡数量" 14 白,76×25,lpos(262,494.5) | Label string=`房卡数量` fontSize=14 color=白 |
| Spirit220 | 公告文字 | "公告文字" 16 白,84×28,lpos(-126,239) | Label string=`公告文字` fontSize=16 color=白 |
| Spirit340 | 微信公众号内容 | "微信公众号内容" 14 (46,5,205),133×25,lpos(-221.5,-592.5) | Label string=`微信公众号内容` fontSize=14 color=(46,5,205) |
| Spirit681 | 客服QQ | "客服QQ说明" 14 (102,41,16),104×25,lpos(-699,-430.5) | Label string=`客服QQ说明` fontSize=14 color=(102,41,16) |
| Spirit497 | Spirit497 | "1000" 14 白,40×25,lpos(416,494.5) | Label string=`1000` fontSize=14(房卡数量值) |
| Spirit178 | 手机2 | "客服QQ:" 11 (233,210,7),67×20,lpos(-361.5,-185) | Label string=`客服QQ:` fontSize=11 color=(233,210,7) |
| Spirit179 | 微信2 | "客服QQ:" 11 (233,210,7),67×20,lpos(-361.5,-211) | Label string=`客服QQ:` fontSize=11 color=(233,210,7) |
| Spirit193 | 手机1 | "手机:" 11 白,34×20,lpos(-431,-185) | Label string=`手机:` fontSize=11 |
| Spirit194 | 微信1 | "微信:" 11 白,34×20,lpos(-431,-211) | Label string=`微信:` fontSize=11 |
| Spirit180 | qq1 | "QQ:" 11 白,26×20,lpos(-435,-159) | Label string=`QQ:` fontSize=11 |
| Spirit682 | qq2 | "a" 11 (233,210,7),8×20,lpos(-391,-159) | Label string=`a` fontSize=11 color=(233,210,7) |
**脚本驱动要点**:
- **底部 tab 栏**:img=14 的 5 个帧是底部导航 tab——帧 1=更多(Spirit3120)、帧 2=分享(Spirit14)、帧 3=任务(Spirit17)、帧 4=战绩(Spirit13)、帧 11=设置(Spirit7)。脚本按语义绑定各自点击回调。
- **核心功能按钮**(`CanClick=1`、XML Event 空):创建房间(Spirit11)、加入房间(Spirit12)、比赛场(Spirit483)、星星场平台(Spirit568)、商城(Spirit3016)、福袋(Spirit3018)、房间列表(Spirit99)、更多(Spirit234)、Spirit3139(无名称主按钮)。脚本按语义绑定。
- **自引用 MouseUp**:Spirit4 主界面背景(`MouseUp=4`)、Spirit679(`MouseUp=679`)、Spirit219 公告底(`MouseUp=219`)、Spirit16 广告(`MouseUp=16`)、Spirit340 微信公众号内容(`MouseUp=340`)→ 语义为「点击自身」,脚本按需绑定(如公告栏打开公告详情)。
- **动态文本**:Spirit220 公告文字、Spirit340 微信公众号内容、Spirit497 房卡数量值、Spirit681 客服QQ 说明——运行时替换为实际内容(见 4.1)。
- **Spirit16 广告 9-slice**:img=245 边框 (1,1,1,1) 需设到 spriteFrame `.meta` 的 `border`,**延后处理**(改 `.meta` 需先征得同意)。Sprite 组件 `_type=SLICED` 已设。
---
### 3.19 Layer50_MainScene.prefab(MainScene_Layer,主场景 HUD)
源 Layer00050.xml:11 spirits,GroupID=21。这是**游戏主场景(牌桌)顶部状态栏 HUD**,13 节点(1 root + 1 group-21 + 11 children)。
```
Layer50_MainScene UITransform 1600×720 Widget 45
└─ group-21 UITransform 1600×720 Widget 45
├─ Spirit149 背景 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit284 UITransform 247×62 Widget 16(9-slice)
├─ Spirit156 时钟冒号 UITransform 4×18 Widget 16
├─ Spirit154 小时 UITransform 30×20 Widget 16(数字)
├─ Spirit155 分钟 UITransform 30×20 Widget 16(数字)
├─ Spirit336 wifi UITransform 29×22 Widget 16
├─ Spirit337 电量背景 UITransform 49×19 Widget 16
├─ Spirit338 电量状况 UITransform 49×19 Widget 16
├─ Spirit3141 UITransform 102×21 Widget 16(数字)
├─ Spirit3142 UITransform 59×25 Widget 16
└─ Spirit291 UITransform 84×28 Widget 16 [Label]
```
**Sprite(10 个)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit149 | 游戏主界面背景 | Img=66,1280×720,lpos(0,0) | Sprite sf=`e1aa83b5-…`;contentSize **1600×720**;Widget 45 |
| Spirit284 | Spirit284 | Img=67,247×62(9-slice 20/20/50/20),lpos(-420.5,325) | Sprite sf=`64bfd3fc-…` type=SLICED;contentSize 247×62;Widget 16 |
| Spirit156 | 时钟冒号 | Img=70,4×18,lpos(-397,325) | Sprite sf=`7d193c00-…`;contentSize 4×18;Widget 16 |
| Spirit154 | 小时 | Img=69 帧1,30×20,lpos(-420,325) | Sprite sf=`55fc2d29-…`;contentSize 30×20;Widget 16 |
| Spirit155 | 分钟 | Img=69 帧1,30×20,lpos(-374,325) | Sprite sf=`55fc2d29-…`;contentSize 30×20;Widget 16 |
| Spirit336 | wifi | Img=113 帧1,29×22,lpos(-510.5,325) | Sprite sf=`1ef090dc-…`;contentSize 29×22;Widget 16 |
| Spirit337 | 电量背景 | Img=112 帧1,49×19,lpos(-463.5,324.5) | Sprite sf=`7e671255-…`;contentSize 49×19;Widget 16 |
| Spirit338 | 电量状况 | Img=112 帧1,49×19,lpos(-463.5,324.5) | Sprite sf=`7e671255-…`;contentSize 49×19;Widget 16 |
| Spirit3141 | Spirit3141 | Img=398 帧1,102×21,lpos(-411,324.5) | Sprite sf=`7d88dcff-…`;contentSize 102×21;Widget 16 |
| Spirit3142 | Spirit3142 | Img=399,59×25,lpos(-494.5,324.5) | Sprite sf=`13a32880-…`;contentSize 59×25;Widget 16 |
**Label(1 个)**:
| 节点 | 名称 | 源字段(Text/字号/颜色,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit291 | Spirit291 | "Spirit291" 16 黑(0,0,0),84×28,lpos(-393,418) | Label string=`Spirit291` fontSize=16 color=黑 |
**脚本驱动要点**:
- **时钟**:Spirit154 小时 + Spirit156 冒号 + Spirit155 分钟,img=69 是 10 帧数字(0-9),运行时脚本按当前时间切 spriteFrame(帧 N = 数字 N-1)。
- **wifi 信号**:img=113 4 帧(信号强度),Spirit336 按信号强弱切帧。
- **电量**:img=112 3 帧,Spirit337 电量背景 + Spirit338 电量状况(覆盖显示当前电量)。
- **Spirit3141**:img=398 10 帧数字(0-9),运行时填充(可能金币/筹码数)。
- **Spirit291**(Label):"Spirit291" 占位文本,运行时替换(可能房间信息/昵称)。
- **Spirit284 9-slice**:img=67 边框 (20,20,50,20) 需设到 spriteFrame `.meta` 的 `border`,**延后处理**(改 `.meta` 需先征得同意)。Sprite `_type=SLICED` 已设。
- **可点击**:全部 `CanClick=1`;自引用 MouseUp 有 Spirit149(背景)、Spirit284、Spirit336(wifi)、Spirit291(Label)→ 脚本按需绑定(状态栏通常无需点击)。
---
### 3.20 Layer15_JoinRoom.prefab(JoinRoom_Layer,加入房间弹窗)
源 Layer00015.xml:26 spirits,GroupID=5。**加入房间弹窗**,28 节点(1 root + 1 group-5 + 26 children),全部 Sprite(无 Label)。含数字键盘(img=9 12 帧)与房间号 FrameText 显示。
```
Layer15_JoinRoom UITransform 1600×720 Widget 45
└─ group-5 UITransform 1600×720 Widget 45
├─ Spirit27 加入房间遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit26 加入房间背景 UITransform 800×660 Widget 16 (hc=0) [9-slice]
├─ Spirit28 房间号显示 UITransform 465×103 Widget 16 (hc=0.5)
├─ Spirit68 加入房间标题 UITransform 510×138 Widget 16 (hc=-24)
├─ Spirit687 UITransform 403×76 Widget 16 (hc=0.5)
├─ Spirit236~241 房间号 1-6 UITransform 30×30 Widget 16(FrameText)
├─ Spirit29~40/514 数字键盘 UITransform 186×82 Widget 16(12 键)
├─ Spirit602 UITransform 234×78 Widget 16 (hc=0)
└─ Spirit59 加入房间关闭按钮 UITransform 83×84 Widget 16 (hc=366.5)
```
**节点表(26 个,全部 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit27 | 加入房间遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit26 | 加入房间背景 | Img=2(9-slice 250/200/346/245),800×660,lpos(0,-5) | Sprite sf=`8eb7acc3-…` type=SLICED;contentSize 800×660;Widget 16 hc=0;border 待补 |
| Spirit28 | 房间号显示 | Img=8,465×103,lpos(0.5,174.5) | Sprite sf=`2e036f97-…`;contentSize 465×103;Widget 16 hc=0.5 |
| Spirit29 | 0 | Img=9 帧11,186×82,lpos(1,-167) | Sprite sf=`dcdbc60a-…`;contentSize 186×82;Widget 16 hc=1 |
| Spirit30 | 1 | Img=9 帧1,186×82,lpos(-185,79) | Sprite sf=`560b4ba0-…`;contentSize 186×82;Widget 16 hc=-185 |
| Spirit31 | 2 | Img=9 帧2,186×82,lpos(1,79) | Sprite sf=`b2e04f1b-…`;contentSize 186×82;Widget 16 hc=1 |
| Spirit32 | 3 | Img=9 帧3,186×82,lpos(187,79) | Sprite sf=`db239522-…`;contentSize 186×82;Widget 16 hc=187 |
| Spirit33 | 4 | Img=9 帧4,186×82,lpos(-185,-3) | Sprite sf=`029880e7-…`;contentSize 186×82;Widget 16 hc=-185 |
| Spirit34 | 5 | Img=9 帧5,186×82,lpos(1,-3) | Sprite sf=`2c46f8bd-…`;contentSize 186×82;Widget 16 hc=1 |
| Spirit35 | 6 | Img=9 帧6,186×82,lpos(187,-3) | Sprite sf=`1efdc1ea-…`;contentSize 186×82;Widget 16 hc=187 |
| Spirit36 | 7 | Img=9 帧7,186×82,lpos(-185,-85) | Sprite sf=`c468fa1f-…`;contentSize 186×82;Widget 16 hc=-185 |
| Spirit37 | 8 | Img=9 帧8,186×82,lpos(1,-85) | Sprite sf=`5153e2e5-…`;contentSize 186×82;Widget 16 hc=1 |
| Spirit38 | 9 | Img=9 帧9,186×82,lpos(187,-85) | Sprite sf=`2c464751-…`;contentSize 186×82;Widget 16 hc=187 |
| Spirit39 | 重输 | Img=9 帧10,186×82,lpos(-281,-570) | Sprite sf=`bbd7edb3-…`;contentSize 186×82;Widget 16 hc=-281(⚠️ Y=889 屏幕外) |
| Spirit40 | 删除 | Img=9 帧12,186×82,lpos(187,-167) | Sprite sf=`baac739a-…`;contentSize 186×82;Widget 16 hc=187 |
| Spirit68 | 加入房间标题 | Img=40,510×138,lpos(-24,513) | Sprite sf=`05398908-…`;contentSize 510×138;Widget 16 hc=-24 |
| Spirit59 | 加入房间关闭按钮 | Img=33,83×84,lpos(366.5,302) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=366.5 |
| Spirit236 | 房间号1 | Img=46 FrameText=1,30×30,lpos(-189,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=-189 |
| Spirit237 | 房间号2 | Img=46,30×30,lpos(-112,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=-112 |
| Spirit238 | 房间号3 | Img=46,30×30,lpos(-32,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=-32 |
| Spirit239 | 房间号4 | Img=46,30×30,lpos(44,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=44 |
| Spirit240 | 房间号5 | Img=46,30×30,lpos(121,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=121 |
| Spirit241 | 房间号6 | Img=46,30×30,lpos(197,150) | Sprite sf=`f3f3eadc-…`;contentSize 30×30;Widget 16 hc=197 |
| Spirit687 | Spirit687 | Img=28 帧2,403×76,lpos(0.5,275) | Sprite sf=`b64f27f7-…`;contentSize 403×76;Widget 16 hc=0.5 |
| Spirit514 | Spirit514 | Img=9 帧10,186×82,lpos(-185,-167) | Sprite sf=`bbd7edb3-…`;contentSize 186×82;Widget 16 hc=-185 |
| Spirit602 | Spirit602 | Img=373 帧3→1,234×78,lpos(0,-251) | Sprite sf=`73527749-…`;contentSize 234×78;Widget 16 hc=0 |
**脚本驱动要点**:
- **数字键盘 12 键**(img=9,12 帧 3×4 布局):帧号从左到右、从上到下 1..12 = 数字 1-9 + 重输 + 0 + 删除。布局三列 X=362/548/734、四行 Y=240/322/404/486:
- 行 1 (Y=240):Spirit30 数字1(X=362) / Spirit31 数字2(X=548) / Spirit32 数字3(X=734)
- 行 2 (Y=322):Spirit33 数字4 / Spirit34 数字5 / Spirit35 数字6
- 行 3 (Y=404):Spirit36 数字7 / Spirit37 数字8 / Spirit38 数字9
- 行 4 (Y=486):Spirit514 重输(X=362) / Spirit29 数字0(X=548) / Spirit40 删除(X=734)
脚本按位置绑定各键回调,读取对应键值(数字 0-9 + 重输 + 删除,具体语义由加入房间逻辑定)。
- **Spirit39 重输(Y=889 屏幕外)**:源数据里额外一个「重输」按钮位于屏幕下方(lpos.y=-570),与 Spirit514 同为 img=9 帧 10。⚠️ 逐字复刻源数据(数据源权威不兜底),运行时可能不显示或需脚本按需显隐。
- **房间号显示(Spirit236~241)**:img=46 是 10 帧 30×30 数字(FrameText),6 个 spirit 从左到右 X=436/513/593/669/746/822 组成 6 位房间号。运行时按房间号各位数字切 spriteFrame(帧 N = 数字 N-1)。Spirit28 房间号显示底图(img=8,465×103)铺在其后。
- **Spirit602 帧号循环回绕**:img=373 单帧(frame_all=1),源 Frame=3 按 `((3-1)%1)+1=1` 回绕到帧 1(见 1.10)。不是数据错误。
- **Spirit26 加入房间背景是九宫格**(源 `SpiritType=5`,边距 250/200/346/245):Sprite `_type=SLICED` 已设,spriteFrame border 待补。图片 00002.png 被 7 Layer 以 4 组边距复用,本层是其中一组(250/200/346/245,与 Layer608 帮助背景一致),后续补边距需为 (图片,边距) 组合各建 spriteFrame 副本。
- **Spirit68 加入房间标题自引用点击**(`MouseUp=68`)、**Spirit236 房间号1 自引用点击**(`MouseUp=236`)→ 脚本按需绑定。
- **Spirit59 关闭按钮**(`CanClick=1`、XML Event 空)→ 脚本 `bind_button_click_event` 绑定「关闭加入房间弹窗」。
- **Spirit27 遮罩**(`CanClick=1`、XML Event 空)→ 脚本按需绑定「点击遮罩关闭」。
- 其余键均 `CanClick=1`、XML Event 空 → 脚本按需 `bind_button_click_event`。
---
### 3.21 Layer19_WorldRoomList.prefab(WorldRoomList_Layer,世界房间列表)
源 Layer00019.xml:34 spirits,GroupID=82/96/97。**世界房间列表**,38 节点(1 root + 3 group + 34 children),21 Sprite + 13 Label。含 2 张房间卡片(group-96/97,各含头像/房主名/房间号 FrameText)+ 主框架(遮罩/背景/标题/刷新/列表头/分页图标)。
```
Layer19_WorldRoomList UITransform 1600×720 Widget 45
├─ group-82 UITransform 1600×720 Widget 45
│ ├─ Spirit516 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ Spirit517 背景 UITransform 1600×720 Widget 45 [9-slice]
│ ├─ Spirit518 标题 UITransform 182×50 Widget 16 (hc=-372)
│ ├─ Spirit519 关闭/返回 UITransform 59×51 Widget 16 (hc=-593.5)
│ ├─ 刷新 Spirit520 UITransform 104×47 Widget 16 (hc=567)
│ ├─ Spirit521/3019 列表按钮 UITransform 201×67 Widget 16 (hc=158.5 / -120.5)
│ ├─ Spirit566/567 列表头 UITransform 208×43 Widget 16 (hc=-412 / -73)
│ ├─ Spirit92/93 列表按钮 UITransform 210×80 Widget 16 (hc=-109 / 106)
│ └─ Spirit527/562/563/565(Label 列表文本)
├─ group-96(房间卡片 1) UITransform 1600×720 Widget 45
│ ├─ Spirit522 头像 UITransform 100×100 Widget 16 (hc=-366)
│ ├─ Spirit524 卡片底 UITransform 398×261 Widget 16 (hc=-356)
│ ├─ Spirit94/96 卡片按钮 UITransform 216×71 / 206×74 Widget 16
│ ├─ Spirit95 房间号 FrameText UITransform 25×34 Widget 16
│ └─ Spirit526/3020/3022/3024(Label 房主名/信息)
└─ group-97(房间卡片 2) UITransform 1600×720 Widget 45
├─ Spirit523 头像 UITransform 50×50 Widget 16 (hc=-420)
├─ Spirit525 卡片横幅 UITransform 900×151 Widget 16 (hc=-111)
├─ Spirit3026/3027/3028(小图标/数字) Widget 16
└─ Spirit564/3021/3023/3025/3165(Label 列表文本)
```
**节点表(34 个:21 Sprite + 13 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit516 | 遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit517 | 背景 | Img=254(9-slice 200/134/200/135),1280×720,lpos(0,0) | Sprite sf=`a31fecc3-…` type=SLICED;contentSize **1600×720**;Widget 45;border 待补 |
| Spirit518 | 标题 | Img=211 帧1,182×50,lpos(-372,320) | Sprite sf=`135076af-…`;contentSize 182×50;Widget 16 hc=-372 |
| Spirit519 | 关闭/返回 | Img=259,59×51,lpos(-593.5,322.5) | Sprite sf=`3ce98bad-…`;contentSize 59×51;Widget 16 hc=-593.5 |
| 刷新 (Spirit520) | 刷新 | Img=213,104×47,lpos(567,322.5) | Sprite sf=`612b277e-…`;contentSize 104×47;Widget 16 hc=567 |
| Spirit521 | 列表按钮 | Img=257 帧1,201×67,lpos(158.5,-314.5) | Sprite sf=`a041ddc3-…`;contentSize 201×67;Widget 16 hc=158.5 |
| Spirit566 | 列表头 | Img=210,208×43,lpos(-412,-657.5) | Sprite sf=`084eb6ca-…`;contentSize 208×43;Widget 16 hc=-412 |
| Spirit567 | 列表头 | Img=210,208×43,lpos(-73,-666.5) | Sprite sf=`084eb6ca-…`;contentSize 208×43;Widget 16 hc=-73 |
| Spirit3019 | 列表按钮 | Img=257 帧2,201×67,lpos(-120.5,-314.5) | Sprite sf=`5600806d-…`;contentSize 201×67;Widget 16 hc=-120.5 |
| Spirit92 | 列表按钮 | Img=358 帧1,210×80,lpos(-109,242) | Sprite sf=`5d57263e-…`;contentSize 210×80;Widget 16 hc=-109 |
| Spirit93 | 列表按钮 | Img=358 帧4,210×80,lpos(106,242) | Sprite sf=`f2ac27a0-…`;contentSize 210×80;Widget 16 hc=106 |
| Spirit527 | Label | FontSize=14 黑,75×25,lpos(-26.5,-463.5) | Label fontSize=14 color=黑;Widget 16 hc=-26.5 |
| Spirit562 | Label | FontSize=14 白,75×25,lpos(-417.5,-651.5) | Label fontSize=14 color=白;Widget 16 hc=-417.5 |
| Spirit563 | Label | FontSize=16 黑,84×28,lpos(90,-535) | Label fontSize=16 color=黑;Widget 16 hc=90 |
| Spirit565 | Label | FontSize=14 白,75×25,lpos(-47.5,-659.5) | Label fontSize=14 color=白;Widget 16 hc=-47.5 |
| Spirit522 | 头像 | Img=10,100×100,lpos(-366,142) | Sprite sf=`dcc4530b-…`;contentSize 100×100;Widget 16 hc=-366 |
| Spirit524 | 卡片底 | Img=212 帧1,398×261,lpos(-356,-494.5) | Sprite sf=`49c6b009-…`;contentSize 398×261;Widget 16 hc=-356 |
| Spirit526 | Label | FontSize=24 红 "啊",32×42,lpos(-425,-434) | Label fontSize=24 color=红;Widget 16 hc=-425 |
| Spirit3020 | Label | FontSize=16 棕,10×28,lpos(-368,-467) | Label fontSize=16 color=棕;Widget 16 hc=-368 |
| Spirit3022 | Label | FontSize=14 白,75×25,lpos(-350.5,-535.5) | Label fontSize=14 color=白;Widget 16 hc=-350.5 |
| Spirit3024 | Label | FontSize=14 白,9×25,lpos(-489.5,-533.5) | Label fontSize=14 color=白;Widget 16 hc=-489.5 |
| Spirit94 | 卡片按钮 | Img=360,216×71,lpos(-509,-478.5) | Sprite sf=`a5258649-…`;contentSize 216×71;Widget 16 hc=-509 |
| Spirit95 | 房间号 | Img=359 FrameText=1,25×34,lpos(-514.5,-478) | Sprite sf=`8ef599cb-…`;contentSize 25×34;Widget 16 hc=-514.5 |
| Spirit96 | 卡片按钮 | Img=361,206×74,lpos(-307,-427) | Sprite sf=`419d5a22-…`;contentSize 206×74;Widget 16 hc=-307 |
| Spirit523 | 头像 | Img=10,50×50,lpos(-420,167) | Sprite sf=`dcc4530b-…`;contentSize 50×50;Widget 16 hc=-420 |
| Spirit525 | 卡片横幅 | Img=255 帧2→1,900×151,lpos(-111,-740.5) | Sprite sf=`b54e832d-…`;contentSize 900×151;Widget 16 hc=-111 |
| Spirit564 | Label | FontSize=14 棕,75×25,lpos(-455.5,-730.5) | Label fontSize=14 color=棕;Widget 16 hc=-455.5 |
| Spirit3021 | Label | FontSize=14 棕,9×25,lpos(-482.5,-692.5) | Label fontSize=14 color=棕;Widget 16 hc=-482.5 |
| Spirit3023 | Label | FontSize=14 棕,75×25,lpos(224.5,-692.5) | Label fontSize=14 color=棕;Widget 16 hc=224.5 |
| Spirit3025 | Label | FontSize=14 棕,75×25,lpos(224.5,-655.5) | Label fontSize=14 color=棕;Widget 16 hc=224.5 |
| Spirit3026 | 小图标 | Img=260 帧2→1,32×27,lpos(-257,-692.5) | Sprite sf=`c40c91dc-…`;contentSize 32×27;Widget 16 hc=-257 |
| Spirit3027 | 小图标 | Img=261 帧2,21×22,lpos(-219.5,-692) | Sprite sf=`823769bd-…`;contentSize 21×22;Widget 16 hc=-219.5 |
| Spirit3028 | 数字 | Img=258 FrameText=8,16×19,lpos(224,-710.5) | Sprite sf=`3a6cb966-…`;contentSize 16×19;Widget 16 hc=224 |
| Spirit3165 | Label | FontSize=14 白,9×25,lpos(-532.5,-680.5) | Label fontSize=14 color=白;Widget 16 hc=-532.5 |
**脚本驱动要点**:
- **颜色映射**:源 `FontColor` 按 0xBBGGRR 存储(高位 B、低位 R):`16777215`=白、`0`=黑、`1981561`=0x1E3C79→RGB(121,58,30) 棕、`255`=0x0000FF→红。Label `_color` 已按此转换。
- **2 张房间卡片(group-96 / group-97)**:WorldRoomList 的列表项是运行时动态生成的房间卡片模板。group-96(9 spirit)与 group-97(10 spirit)是两张卡片样例,脚本按房间数量复用其结构(房主头像 Spirit522/523、卡片底 Spirit524/横幅 Spirit525、房主名 Label、房间号 FrameText Spirit95/3028、进入按钮 Spirit94/96)。
- **房间号 FrameText**:img=359(10 帧 25×34)与 img=258(10 帧 16×19)是 0-9 数字,Spirit95(FrameText=1)、Spirit3028(FrameText=8)运行时按房间号各位数字切 spriteFrame(帧 N = 数字 N-1)。
- **帧号循环回绕**:img=255/260 单帧(frame_all=1),源 Frame=2 按 `((2-1)%1)+1=1` 回绕到帧 1(见 1.10);img=261 帧 2(frame_all=2)正常取帧 2。
- **Spirit517 背景九宫格**(源 `SpiritType=5`,边距 200/134/200/135):Sprite `_type=SLICED` 已设,spriteFrame border 待补(图片 00254.png 是 1280×720 单图,非多 Layer 复用,补边距可直改其 spriteFrame border)。
- **动态文本**:Label `_string` 多为占位("Spirit526" = ObjectName、"s"/"啊" = 源占位),运行时替换为房主昵称、房间号、房间信息等(见 4.1)。
- **可点击**:Spirit516 遮罩(点击关闭)、Spirit519 关闭/返回、刷新 Spirit520、Spirit94 进入房间(`MouseUp=94` 自引用)、其余按钮按需绑定(见 4.2)。
---
### 3.22 Layer27_CreateRoom.prefab(CreateRoom_Layer,创建房间)
源 Layer00027.xml:19 spirits,GroupID=4。**创建房间弹窗**,21 节点(1 root + 1 group + 19 children),15 Sprite + 4 Label。含遮罩 + 背景(9-slice)+ 标题 + 局数选择×2 + 下注上限选择×3 + 玩法选择×2 + 确定创建按钮 + 关闭按钮 + 3 张 frame sprite(选项标签)+ 4 个选项文本。
```
Layer27_CreateRoom UITransform 1600×720 Widget 45
└─ group-4 UITransform 1600×720 Widget 45
├─ Spirit18 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit19 背景 UITransform 850×400 Widget 16 (hc=0) [9-slice]
├─ Spirit62 标题 UITransform 510×138 Widget 16 (hc=51)
├─ Spirit20/21 局数选择 UITransform 50×50 Widget 16 (hc=-98 / 165)
├─ Spirit22/23/24 下注上限 UITransform 50×50 Widget 16 (hc=-465 / -202 / -465)
├─ Spirit25 确定创建 UITransform 292×102 Widget 16 (hc=0)
├─ Spirit139/140 玩法选择 UITransform 50×50 Widget 16 (hc=-98 / 165)
├─ Spirit60 关闭按钮 UITransform 83×84 Widget 16 (hc=391.5)
├─ Spirit672/673/674/675(Label 选项文本) Widget 16
└─ Spirit677/678/686(frame sprite) Widget 16
```
**节点表(19 个:15 Sprite + 4 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit18 | 创建房间遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit19 | 创建房间背景 | Img=2(9-slice 250/200/346/245),850×400,lpos(0,2) | Sprite sf=`8eb7acc3-…` type=SLICED;contentSize 850×400;Widget 16 hc=0;border 待补 |
| Spirit62 | 创建房间标题 | Img=40,510×138,lpos(51,589) | Sprite sf=`05398908-…`;contentSize 510×138;Widget 16 hc=51 |
| Spirit20 | 局数选择1 | Img=3,50×50,lpos(-98,-38) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=-98 |
| Spirit21 | 局数选择2 | Img=3,50×50,lpos(165,-38) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=165 |
| Spirit22 | 下注上限选择1 | Img=3,50×50,lpos(-465,488) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=-465 |
| Spirit23 | 下注上限选择2 | Img=3,50×50,lpos(-202,488) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=-202 |
| Spirit24 | 下注上限选择3 | Img=3,50×50,lpos(-465,418) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=-465 |
| Spirit25 | 确定创建房间 | Img=34 帧1,292×102,lpos(0,-178) | Sprite sf=`c8cc3782-…`;contentSize 292×102;Widget 16 hc=0 |
| Spirit139 | 玩法一选择 | Img=3,50×50,lpos(-98,37) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=-98 |
| Spirit140 | 玩法二选择 | Img=3,50×50,lpos(165,37) | Sprite sf=`4b924bd2-…`;contentSize 50×50;Widget 16 hc=165 |
| Spirit60 | 创建房间关闭按钮 | Img=33,83×84,lpos(391.5,178) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=391.5 |
| Spirit672 | Spirit672 | FontSize=16 黑,84×28,lpos(-10,41) | Label fontSize=16 color=黑;Widget 16 hc=-10 |
| Spirit673 | Spirit673 | FontSize=16 黑,84×28,lpos(238,41) | Label fontSize=16 color=黑;Widget 16 hc=238 |
| Spirit674 | Spirit674 | FontSize=16 黑,84×28,lpos(-9,-39) | Label fontSize=16 color=黑;Widget 16 hc=-9 |
| Spirit675 | Spirit675 | FontSize=16 黑,84×28,lpos(253,-35) | Label fontSize=16 color=黑;Widget 16 hc=253 |
| Spirit677 | Spirit677 | Img=27 帧3,134×37,lpos(-241,40.5) | Sprite sf=`6ea3afac-…`;contentSize 134×37;Widget 16 hc=-241 |
| Spirit678 | Spirit678 | Img=27 帧2,134×37,lpos(-239,-37.5) | Sprite sf=`a1c2c7c1-…`;contentSize 134×37;Widget 16 hc=-239 |
| Spirit686 | Spirit686 | Img=28 帧1,403×76,lpos(0.5,153) | Sprite sf=`ac673006-…`;contentSize 403×76;Widget 16 hc=0.5 |
**脚本驱动要点**:
- **Spirit19 背景九宫格**(源 `SpiritType=5`,边距 250/200/346/245):Sprite `_type=SLICED` 已设,spriteFrame border 待补。图片 00002.png 被 7 Layer 以 4 组边距复用,本层是其中一组(250/200/346/245,与 Layer608 帮助背景一致),后续补边距需为 (图片,边距) 组合各建 spriteFrame 副本。
- **⚠️ 负 Y 源数据逐字复刻**:Spirit62 标题(Y=-298 → lpos.y=589)、Spirit22/23(Y=-153 → lpos.y=488)、Spirit24(Y=-83 → lpos.y=418)源坐标在背景顶边(Y=158)上方,lpos.y 超出屏幕顶(>360)。这是源数据真实坐标(与 Layer15 标题 Y=-222 同理),迁移逐字复刻不兜底,运行时脚本需按实际布局重新定位或按需显隐。
- **img=3 选择按钮(7 处共用)**:Spirit20/21(局数)、Spirit22/23/24(下注上限)、Spirit139/140(玩法)共用同一 spriteFrame `4b924bd2-…`(50×50 单图)。源未提供「选中/未选中」两态图,脚本需按选中态切 spriteFrame 或换图(数据源权威,选中态图需在来源处补充)。
- **多帧 sprite**:img=27(3 帧 134×37)Spirit677 用帧 3 / Spirit678 用帧 2;img=28(2 帧 403×76)Spirit686 用帧 1。仅落单帧 spriteFrame,运行时按需切帧或加 cc.Animation。
- **动态文本**:4 个 Label(Spirit672/673/674/675)`_string="Spirit672"` 是 ObjectName 占位,运行时替换为局数/下注上限/玩法选项的实际值(见 4.1)。
- **可点击**:全部 19 节点 `CanClick=1` 但源 EventList 空(无 `MouseUp` 自引用),按语义绑定:Spirit18 遮罩(点击关闭)、Spirit60 关闭按钮、Spirit25 确定创建、Spirit20/21/139/140 局数/玩法选择、Spirit22/23/24 下注上限选择(见 4.2)。
---
### 3.23 Layer11_ChargeInfo.prefab(ChargeInfo_Layer,充值提示)
源 Layer00011.xml:4 spirits,GroupID=20。**充值提示弹窗**,6 节点(1 root + 1 group + 4 children),2 Sprite + 2 Label。
```
Layer11_ChargeInfo UITransform 1600×720 Widget 45
└─ group-20 UITransform 1600×720 Widget 45
├─ Spirit146 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit147 背景 UITransform 454×207 Widget 16 (hc=-7)
├─ Spirit148 提示文字 UITransform 126×28 Widget 16 (hc=-116) [Label]
└─ Spirit680 补充文字 UITransform 21×28 Widget 16 (hc=-78.5) [Label]
```
**节点表(4 个:2 Sprite + 2 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit146 | 充值提示遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit147 | 充值提示背景 | Img=54,454×207,lpos(-7,13.5) | Sprite sf=`4b04584c-…`;contentSize 454×207;Widget 16 hc=-7 |
| Spirit148 | 充值提示文字 | FontSize=16 棕,126×28,lpos(-116,54) | Label fontSize=16 color=(102,41,16,255);Widget 16 hc=-116 |
| Spirit680 | Spirit680 | FontSize=16 紫,21×28,lpos(-78.5,-6) | Label fontSize=16 color=(46,5,205,255);Widget 16 hc=-78.5 |
**脚本驱动要点**:
- **Spirit147 背景复用 img=54**(00054.png 454×207「掉线背景」,Layer615 Spirit231 同图):非九宫格,Sprite type=SIMPLE。
- **动态文本**:Spirit148 `_string="充值提示文字"`、Spirit680 `_string="字"` 均为占位,运行时替换为实际充值提示内容(见 4.1)。
- **Spirit680 颜色**:FontColor=13436206=0xCD052E→RGB(46,5,205) 深紫,逐字复刻源数据。
- **可点击**:全部 `CanClick=1`、源 EventList 空,按语义绑定 Spirit146 遮罩(点击关闭)、Spirit147 背景(按需)(见 4.2)。
---
### 3.24 Layer13.prefab(Layer13,战绩弹窗)
源 Layer00013.xml:6 spirits,分 2 组(GroupID=7 战绩主界面、GroupID=8 分页箭头)。**双 group 战绩弹窗**,9 节点(1 root + 2 group + 6 children),6 Sprite + 0 Label。
```
Layer13 UITransform 1600×720 Widget 45
├─ group-7 UITransform 1600×720 Widget 45
│ ├─ Spirit55 战绩返回 UITransform 123×43 Widget 16 (hc=-524.5)
│ ├─ Spirit85 UITransform 195×68 Widget 16 (hc=106.5)
│ ├─ Spirit84 UITransform 195×68 Widget 16 (hc=-104.5)
│ └─ Spirit61 战绩关闭按钮 UITransform 83×84 Widget 16 (hc=585.5)
└─ group-8 UITransform 1600×720 Widget 45
├─ Spirit104 UITransform 33×41 Widget 16 (hc=491.5)
└─ Spirit105 UITransform 33×41 Widget 16 (hc=557.5)
```
**节点表(6 个 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit55 | 战绩返回 | Img=354 帧 2→1,123×43,lpos(-524.5,294.5) | Sprite sf=`f9208601-…`;contentSize 123×43;Widget 16 hc=-524.5 |
| Spirit85 | Spirit85 | Img=10 帧 1,195×68,lpos(106.5,299) | Sprite sf=`dcc4530b-…`;contentSize 195×68;Widget 16 hc=106.5 |
| Spirit84 | Spirit84 | Img=10 帧 1,195×68,lpos(-104.5,299) | Sprite sf=`dcc4530b-…`;contentSize 195×68;Widget 16 hc=-104.5 |
| Spirit61 | 战绩关闭按钮 | Img=33 帧 0→1,83×84,lpos(585.5,311) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=585.5 |
| Spirit104 | Spirit104 | Img=65 帧 1,33×41,lpos(491.5,-304.5) | Sprite sf=`690f9f06-…`;contentSize 33×41;Widget 16 hc=491.5 |
| Spirit105 | Spirit105 | Img=65 帧 2,33×41,lpos(557.5,-304.5) | Sprite sf=`a08dd099-…`;contentSize 33×41;Widget 16 hc=557.5 |
**脚本驱动要点**:
- **双 group 结构**:`group-7`(战绩主界面:Spirit55 返回 + Spirit85/84 两个图标 + Spirit61 关闭按钮)与 `group-8`(Spirit104/105 分页箭头)两组独立,运行时按需显隐某一组。
- **帧号回绕**:Spirit55 源 `Frame=2` 但 img=354 仅 `frame_all=1`,按 §1.10 取模回绕第 1 帧(单帧图直接引用);Spirit61 源 `Frame=0` 同样回绕第 1 帧(img=33 单帧)。
- **img=65 两帧分页箭头**:Spirit104 帧 1 / Spirit105 帧 2(上一页/下一页),源 ObjectName 无语义名,靠位置(X=1115/1181、Y=644 屏幕底部)识别为分页控件。
- **Spirit85/84 共用 img=10**:两个 195×68 图标(img=10 单帧 166×68 拉伸到 195×68),ObjectName 无语义名,为战绩内容区装饰图标。
- **⚠️ 负 Y 源数据**:Spirit104/105 源 Y=644 → lpos.y=-304.5(接近屏幕底边 360 之外),逐字复刻,运行时按需重新定位(同 Layer27 负 Y 处理)。
- **可点击**:全部 `CanClick=1`、源 EventList 空,按语义绑定 Spirit55 战绩返回(返回战绩列表)、Spirit61 战绩关闭按钮(关闭弹窗)、Spirit104/105 分页箭头(翻页)(见 4.2)。
---
### 3.25 Layer22_Share.prefab(Share_Layer,分享弹窗)
源 Layer00022.xml:6 spirits,GroupID=11。**分享弹窗**,8 节点(1 root + 1 group + 6 children),6 Sprite + 0 Label。
```
Layer22_Share UITransform 1600×720 Widget 45
└─ group-11 UITransform 1600×720 Widget 45
├─ Spirit72 分享遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit71 分享背景 UITransform 725×482 Widget 16 (hc=0.5) [9-slice]
├─ Spirit73 分享标题 UITransform 200×80 Widget 16 (hc=61)
├─ Spirit691 UITransform 264×80 Widget 16 (hc=150)
├─ Spirit74 分享微信好友 UITransform 200×192 Widget 16 (hc=-239)
└─ Spirit75 分享朋友圈 UITransform 200×192 Widget 16 (hc=-25)
```
**节点表(6 个 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit72 | 分享遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit71 | 分享背景 | Img=345,725×482,lpos(0.5,0) | Sprite sf=`6e345900-…` type=SLICED;contentSize 725×482;Widget 16 hc=0.5 |
| Spirit73 | 分享标题 | Img=48,200×80,lpos(61,518) | Sprite sf=`7c8eca87-…`;contentSize 200×80;Widget 16 hc=61 |
| Spirit691 | Spirit691 | Img=50 帧 1,264×80,lpos(150,504) | Sprite sf=`5f783910-…`;contentSize 264×80;Widget 16 hc=150 |
| Spirit74 | 分享微信好友 | Img=51 帧 1,200×192,lpos(-239,-128) | Sprite sf=`4d5894ca-…`;contentSize 200×192;Widget 16 hc=-239 |
| Spirit75 | 分享朋友圈 | Img=51 帧 2,200×192,lpos(-25,-128) | Sprite sf=`5b77563f-…`;contentSize 200×192;Widget 16 hc=-25 |
**脚本驱动要点**:
- **九宫格背景**:Spirit71 分享背景 `SpiritType=5`(9-slice),Sprite `type=SLICED` + `sizeMode=CUSTOM` + contentSize=725×482。⚠️ 边框 LeftEdge/TopEdge/RightEdge/BottomEdge = 313/134/313/135 存 spriteFrame border(.meta),延后(改 .meta 需先征同意,见 §1.9)。
- **全屏遮罩**:Spirit72 遮罩 Img=11(00011.png 4×4 通用遮罩拉伸),contentSize 1600×720 + Widget 45。
- **渲染顺序**:遮罩 Spirit72(siblingIndex 0)在背景 Spirit71 之下,符合「遮罩在底层、弹窗内容在上层」。
- **⚠️ 负 Y 源数据**:Spirit73 标题源 Y=-198 → lpos.y=518、Spirit691 源 Y=-184 → lpos.y=504(超出屏幕顶 360),逐字复刻,运行时重新定位。
- **img=51 两帧分享按钮**:Spirit74 微信好友(帧 1)/ Spirit75 朋友圈(帧 2),各 200×192。
- **可点击**:全部 `CanClick=1`、源 EventList 空,按语义绑定 Spirit72 遮罩(点击关闭)、Spirit74 微信好友(分享给微信好友)、Spirit75 朋友圈(分享到朋友圈)(见 4.2)。
---
### 3.26 Layer16_Bind.prefab(Bind_Layer,绑定弹窗)
源 Layer00016.xml:7 spirits,GroupID=80。**绑定弹窗**,9 节点(1 root + 1 group + 7 children),5 Sprite + 2 Label。
```
Layer16_Bind UITransform 1600×720 Widget 45
└─ group-80 UITransform 1600×720 Widget 45
├─ Spirit362 绑定遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit363 UITransform 900×200 Widget 16 (hc=-16) [9-slice]
├─ Spirit364 UITransform 185×73 Widget 16 (hc=-14.5)
├─ Spirit365 UITransform 450×60 Widget 16 (hc=-200) [Label]
├─ Spirit366 UITransform 135×80 Widget 16 (hc=142.5)
├─ Spirit367 UITransform 135×80 Widget 16 (hc=321.5)
└─ Spirit368 UITransform 109×35 Widget 16 (hc=-342.5) [Label]
```
**节点表(7 个:5 Sprite + 2 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit362 | 绑定遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit363 | Spirit363 | Img=41,900×200,lpos(-16,231) | Sprite sf=`3e7492cb-…` type=SLICED;contentSize 900×200;Widget 16 hc=-16 |
| Spirit364 | Spirit364 | Img=187 帧 1,185×73,lpos(-14.5,321.5) | Sprite sf=`b6fe5054-…`;contentSize 185×73;Widget 16 hc=-14.5 |
| Spirit365 | Spirit365 | FontSize=20 黑,450×60,lpos(-200,234) | Label fontSize=20 color=黑(0,0,0,255);contentSize 450×60;Widget 16 hc=-200 |
| Spirit366 | Spirit366 | Img=188 帧 2,135×80,lpos(142.5,234) | Sprite sf=`5209df7b-…`;contentSize 135×80;Widget 16 hc=142.5 |
| Spirit367 | Spirit367 | Img=188 帧 1,135×80,lpos(321.5,234) | Sprite sf=`191af9ac-…`;contentSize 135×80;Widget 16 hc=321.5 |
| Spirit368 | Spirit368 | FontSize=20 黑,109×35,lpos(-342.5,232.5) | Label fontSize=20 color=黑;contentSize 109×35;Widget 16 hc=-342.5 |
**脚本驱动要点**:
- **九宫格背景**:Spirit363 背景 `SpiritType=5`,Sprite `type=SLICED` + `sizeMode=CUSTOM` + contentSize=900×200。⚠️ 边框 55/45/55/45 存 spriteFrame border(.meta),延后(见 §1.9)。
- **全屏遮罩**:Spirit362 遮罩 Img=11(00011.png 4×4 通用遮罩拉伸),contentSize 1600×720 + Widget 45。
- **动态文本**:Spirit365 `_string=""`(空占位)、Spirit368 `_string="Spirit368"`(占位),运行时替换为绑定相关内容(见 4.1)。
- **颜色分量字段**:Layer16 的 FontColor 用 `FontColorR/G/B` 分量(均为 0 = 黑色),**非** 0xBBGGRR 数值形式;迁移为 Label color=(0,0,0,255)。
- **img=188 两帧按钮**:Spirit366 帧 2 / Spirit367 帧 1,绑定操作按钮(源 ObjectName 无语义名,靠位置/帧识别)。
- **可点击**:全部 `CanClick=1`、源 EventList 空,按语义绑定 Spirit362 遮罩(点击关闭)、Spirit366/367(绑定操作按钮)、Spirit364(按需)(见 4.2)。
---
### 3.27 Layer24_Neighbor.prefab(NeighborLayer,邻居弹窗)
源 Layer00024.xml:7 spirits,GroupID=88。**邻居弹窗**,9 节点(1 root + 1 group + 7 children),7 Sprite + 0 Label。
```
Layer24_Neighbor UITransform 1600×720 Widget 45
└─ group-88 UITransform 1600×720 Widget 45
├─ Spirit3005 邻居遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit3006 邻居背景 UITransform 1002×702 Widget 16 (hc=0) [9-slice]
├─ Spirit3007 邻居项1 UITransform 215×69 Widget 16 (hc=266.5)
├─ Spirit3008 邻居项2 UITransform 215×69 Widget 16 (hc=266.5)
├─ Spirit3009 邻居项3 UITransform 215×69 Widget 16 (hc=266.5)
├─ Spirit3010 邻居项4 UITransform 215×69 Widget 16 (hc=266.5)
└─ Spirit3011 关闭 UITransform 83×84 Widget 16 (hc=478.5)
```
**节点表(7 个 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3005 | 邻居遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit3006 | 邻居背景 | Img=243,1002×702,lpos(0,9) | Sprite sf=`ee70b3e9-…` type=SLICED;contentSize 1002×702;Widget 16 hc=0 |
| Spirit3007 | 邻居项1 | Img=244 帧 1,215×69,lpos(266.5,173.5) | Sprite sf=`dcefb181-…`;contentSize 215×69;Widget 16 hc=266.5 |
| Spirit3008 | 邻居项2 | Img=244 帧 1,215×69,lpos(266.5,41.5) | Sprite sf=`dcefb181-…`;contentSize 215×69;Widget 16 hc=266.5 |
| Spirit3009 | 邻居项3 | Img=244 帧 1,215×69,lpos(266.5,-90.5) | Sprite sf=`dcefb181-…`;contentSize 215×69;Widget 16 hc=266.5 |
| Spirit3010 | 邻居项4 | Img=244 帧 1,215×69,lpos(266.5,-222.5) | Sprite sf=`dcefb181-…`;contentSize 215×69;Widget 16 hc=266.5 |
| Spirit3011 | 关闭 | Img=33,83×84,lpos(478.5,269) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=478.5 |
**脚本驱动要点**:
- **九宫格背景**:Spirit3006 背景 `SpiritType=5`,Sprite `type=SLICED` + `sizeMode=CUSTOM` + contentSize=1002×702。⚠️ 边框 LeftEdge/TopEdge/RightEdge/BottomEdge = 0/0/0/0(零边距,等同拉伸)存 spriteFrame border(.meta),延后(见 §1.9)。
- **全屏遮罩**:Spirit3005 遮罩 Img=11(00011.png 4×4 通用遮罩拉伸),contentSize 1600×720 + Widget 45。
- **邻居项×4(Spirit3007~3010)**:`SpiritType=3`(帧 sprite)但 `frame_all=1`(单帧),4 处共用同一 spriteFrame `dcefb181-…`(img244)。纵向排列(源 Y=152/284/416/548,间隔 132),是邻居列表项模板;头像/昵称等为运行时动态叠加(源 XML 无 Text spirit),脚本按邻居数量复用其结构。
- **可点击**:Spirit3005 遮罩 `MouseUp=3005`(自引用,点击关闭);Spirit3006~3011 全部 `CanClick=1` 但 XML EventList 空,按语义绑定 Spirit3011 关闭按钮、Spirit3007~3010 邻居项(查看/进入邻居,按需绑定)(见 4.2)。
---
### 3.28 Layer8_Notice.prefab(Notice_Layer,公告/更多面板)
源 Layer00008.xml:9 spirits,GroupID=95/3。**公告/更多面板**,12 节点(1 root + 2 group + 9 children),8 Sprite + 1 Label。
```
Layer8_Notice UITransform 1600×720 Widget 45
├─ group-3 UITransform 1600×720 Widget 45
│ └─ Spirit145 公告内容 UITransform 60×20 Widget 16 (hc=-529) [Label]
└─ group-95 UITransform 1600×720 Widget 45
├─ Spirit3122 更多遮罩 UITransform 1600×720 Widget 45(全屏拉伸,active=false)
├─ Spirit3121 按钮托盘 UITransform 146×115 Widget 16 (hc=-367) [9-slice]
├─ Spirit3017 背包按钮 UITransform 150×70 Widget 16 (hc=116)
├─ Spirit5 通知 UITransform 150×70 Widget 16 (hc=426)
├─ Spirit235 绑定按钮 UITransform 150×70 Widget 16 (hc=-39)
├─ Spirit604 排行榜 UITransform 150×70 Widget 16 (hc=-194)
├─ Spirit3057 仓库 UITransform 150×70 Widget 16 (hc=271)
└─ Spirit15 反馈 UITransform 150×70 Widget 16 (hc=-349)
```
**节点表(9 个:8 Sprite + 1 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3122 | 更多遮罩 | Img=10,1280×720,lpos(0,0) | Sprite sf=`dcc4530b-…`;contentSize **1600×720**;Widget 45;**active=false** |
| Spirit145 | 公告内容 | FontSize=11 白,60×20,lpos(-529,-437) | Label fontSize=11 color=白(255,255,255,255);contentSize 60×20;Widget 16 hc=-529 |
| Spirit3121 | 按钮托盘 | Img=347,146×115,lpos(-367,-222.5) | Sprite sf=`187be0e6-…` type=SLICED;contentSize 146×115;Widget 16 hc=-367 |
| Spirit3017 | 背包按钮 | Img=14 帧 5,150×70,lpos(116,-210) | Sprite sf=`d504c257-…`;contentSize 150×70;Widget 16 hc=116 |
| Spirit5 | 通知 | Img=14 帧 10,150×70,lpos(426,-210) | Sprite sf=`fe562996-…`;contentSize 150×70;Widget 16 hc=426 |
| Spirit235 | 绑定按钮 | Img=14 帧 9,150×70,lpos(-39,-210) | Sprite sf=`75786e98-…`;contentSize 150×70;Widget 16 hc=-39 |
| Spirit604 | 排行榜 | Img=14 帧 8,150×70,lpos(-194,-210) | Sprite sf=`42f9d0a7-…`;contentSize 150×70;Widget 16 hc=-194 |
| Spirit3057 | 仓库 | Img=14 帧 6,150×70,lpos(271,-210) | Sprite sf=`bcef0a07-…`;contentSize 150×70;Widget 16 hc=271 |
| Spirit15 | 反馈 | Img=14 帧 7,150×70,lpos(-349,-210) | Sprite sf=`096cee7a-…`;contentSize 150×70;Widget 16 hc=-349 |
**脚本驱动要点**:
- **双 group 结构**:`group-3`(公告内容文字)与 `group-95`(更多面板主体)。Spirit145 公告内容的 `GroupID=3` 指向主大厅 group(跨 Layer 共享,源数据如此),迁移忠实保留 group-3 独立 group。
- **全屏遮罩**:Spirit3122 Img=10(00010.png 166×68 拉伸 1280×720),`IsVisible=0` → `_active=false`(隐藏),Widget 45。运行时打开更多面板时激活;点击遮罩关闭(见 4.2)。
- **按钮托盘**:Spirit3121 `SpiritType=5`,Sprite `type=SLICED` + `sizeMode=CUSTOM` + contentSize=146×115。⚠️ 边框 70/50/30/50 存 spriteFrame border(.meta),延后(见 §1.9)。
- **6 功能按钮**:`SpiritType=3` 帧 sprite,img=14 帧 5~10(背包/通知/绑定/排行榜/仓库/反馈),横向排列(源 Y=535,X 从 216→991)。
- **动态文本**:Spirit145 公告内容 `_string="公告内容"`(占位,运行时替换为实际公告)。⚠️ Layer8 的 FontColor 用白色 `FontColorR/G/B=255`(`#FFFFFF`,非 Layer16 的黑色)。
- **可点击**:全部 `CanClick=1`、XML EventList 空,按语义绑定 Spirit3122 遮罩(点击关闭更多面板)、6 按钮(各自功能入口,按需绑定)(见 4.2)。
---
### 3.29 Layer18_Auth.prefab(Auth_layer,授权弹窗)
源 Layer00018.xml:9 spirits,GroupID=57。**授权/认证弹窗**,11 节点(1 root + 1 group + 9 children),5 Sprite + 4 Label。
```
Layer18_Auth UITransform 1600×720 Widget 45
└─ group-57 UITransform 1600×720 Widget 45
├─ Spirit485 授权遮罩 UITransform 1600×720 Widget 45(全屏拉伸,active=false)
├─ Spirit486 授权背景 UITransform 850×180 Widget 16 (hc=0) [9-slice]
├─ Spirit487 授权选项1 UITransform 149×30 Widget 16 (hc=-293.5)
├─ Spirit488 授权选项2 UITransform 149×30 Widget 16 (hc=-294.5)
├─ Spirit489 授权文字1 UITransform 150×40 Widget 16 (hc=-116) [Label 空]
├─ Spirit490 授权文字2 UITransform 350×40 Widget 16 (hc=-16) [Label 空]
├─ Spirit491 授权文字3 UITransform 109×35 Widget 16 (hc=-136.5) [Label 占位]
├─ Spirit492 授权文字4 UITransform 109×35 Widget 16 (hc=-136.5) [Label 占位]
└─ Spirit493 授权主按钮 UITransform 157×74 Widget 16 (hc=301.5)
```
**节点表(9 个:5 Sprite + 4 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit485 | 授权遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45;**active=false** |
| Spirit486 | 授权背景 | Img=41(九宫格),850×180,lpos(0,260) | Sprite sf=`3e7492cb-…` type=SLICED;contentSize 850×180;Widget 16 hc=0 |
| Spirit487 | 授权选项1 | Img=201 帧 1,149×30,lpos(-293.5,292) | Sprite sf=`6ec71a03-…`;contentSize 149×30;Widget 16 hc=-293.5 |
| Spirit488 | 授权选项2 | Img=201 帧 2,149×30,lpos(-294.5,232) | Sprite sf=`e51cd6f4-…`;contentSize 149×30;Widget 16 hc=-294.5 |
| Spirit489 | 授权文字1 | FontSize=20 黑,150×40,lpos(-116,292) | Label fontSize=20 color=黑(0,0,0,255);contentSize 150×40;Widget 16 hc=-116;**Text=""** |
| Spirit490 | 授权文字2 | FontSize=20 黑,350×40,lpos(-16,232) | Label fontSize=20 color=黑;contentSize 350×40;Widget 16 hc=-16;**Text=""** |
| Spirit491 | 授权文字3 | FontSize=20 黑,109×35,lpos(-136.5,291.5) | Label fontSize=20 color=黑;contentSize 109×35;Widget 16 hc=-136.5;Text="Spirit491" |
| Spirit492 | 授权文字4 | FontSize=20 黑,109×35,lpos(-136.5,231.5) | Label fontSize=20 color=黑;contentSize 109×35;Widget 16 hc=-136.5;Text="Spirit492" |
| Spirit493 | 授权主按钮 | Img=202(单帧),157×74,lpos(301.5,260) | Sprite sf=`7467964f-…`;contentSize 157×74;Widget 16 hc=301.5 |
**脚本驱动要点**:
- **单一 group-57**:9 spirits 全在 group-57(源 BelongGroupID=57),无跨 group。
- **全屏遮罩**:Spirit485 Img=11(00011.png 4×4 通用遮罩拉伸),`IsVisible=0` → `_active=false`(隐藏),Widget 45。运行时打开授权弹窗时激活。
- **授权背景**:Spirit486 `SpiritType=5`,Sprite `type=SLICED` + `sizeMode=CUSTOM` + contentSize=850×180,边框 55/45/55/45(同 img41 协议/绑定背景)。⚠️ 边框存 spriteFrame border(.meta),延后(见 §1.9)。
- **授权选项按钮**:Spirit487/488 `SpiritType=3` 帧 sprite,img=201(00201.png 2 帧 149×30),帧 1/帧 2 各占一个节点(授权/取消,按需绑定)。
- **授权主按钮**:Spirit493 img=202(00202.png 单帧 157×74),位于右侧(hc=301.5),授权确认入口。
- **动态文本**:4 个 Label 全是黑色(FontColor=`#000000`)。Spirit489/490 `Text=""`(空占位,运行时填充授权说明);Spirit491/492 `Text="Spirit491"/"Spirit492"`(= ObjectName 占位,运行时替换)。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空,按语义绑定 Spirit485 遮罩(点击关闭)、Spirit487/488 授权选项、Spirit493 授权主按钮(见 4.2)。
---
### 3.30 Layer17_PlayerInfo.prefab(MenuPlayerInfo_Layer,玩家信息菜单)
源 Layer00017.xml:15 spirits,GroupID=18。**玩家信息菜单弹窗**,17 节点(1 root + 1 group + 15 children),7 Sprite + 8 Label。
```
Layer17_PlayerInfo UITransform 1600×720 Widget 45
└─ group-18 UITransform 1600×720 Widget 45
├─ Spirit116 个人信息遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit117 个人信息背景 UITransform 592×402 Widget 16 (hc=0) [9-slice]
├─ Spirit118 头像 UITransform 105×103 Widget 16 (hc=-194.5)
├─ Spirit484 按钮 UITransform 150×49 Widget 16 (hc=-197)
├─ Spirit494 右上图标 UITransform 105×103 Widget 16 (hc=587.5)
├─ Spirit495 左下图标 UITransform 105×103 Widget 16 (hc=-587.5)
├─ Spirit3156 签名底 UITransform 391×79 Widget 16 (hc=77.5) [9-slice]
├─ Spirit196 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit197 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit198 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit199 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit200 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit510 文字 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
├─ Spirit3152 个性签名 UITransform 75×25 Widget 16 (hc=-80.5) [Label]
└─ Spirit3157 文字 UITransform 75×25 Widget 16 (hc=-66.5) [Label]
```
**节点表(15 个:7 Sprite + 8 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit116 | 个人信息遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit117 | 个人信息背景 | Img=54(九宫格),592×402,lpos(0,0) | Sprite sf=`4b04584c-…` type=SLICED;contentSize 592×402;Widget 16 hc=0 |
| Spirit118 | 头像 | Img=25,105×103,lpos(-194.5,87.5) | Sprite sf=`60da43f5-…`;contentSize 105×103;Widget 16 hc=-194.5 |
| Spirit484 | 按钮 | Img=200(单帧),150×49,lpos(-197,-3.5) | Sprite sf=`26e33ced-…`;contentSize 150×49;Widget 16 hc=-197 |
| Spirit494 | 右上图标 | Img=10,105×103,lpos(587.5,308.5) | Sprite sf=`dcc4530b-…`;contentSize 105×103;Widget 16 hc=587.5 |
| Spirit495 | 左下图标 | Img=10,105×103,lpos(-587.5,-308.5) | Sprite sf=`dcc4530b-…`;contentSize 105×103;Widget 16 hc=-587.5 |
| Spirit3156 | 签名底 | Img=407(九宫格),391×79,lpos(77.5,-129.5) | Sprite sf=`92947828-…` type=SLICED;contentSize 391×79;Widget 16 hc=77.5 |
| Spirit196 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,149.5) | Label fontSize=14 color=黑(0,0,0,255);Text="Spirit196"(占位) |
| Spirit197 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,114.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit198 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,79.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit199 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,44.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit200 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,-25.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit510 | 文字 | FontSize=14 黑,75×25,lpos(-80.5,9.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit3152 | 个性签名 | FontSize=14 黑,75×25,lpos(-80.5,-61.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
| Spirit3157 | 文字 | FontSize=14 黑,75×25,lpos(-66.5,-113.5) | Label fontSize=14 color=黑;Text="Spirit766"(占位) |
**脚本驱动要点**:
- **单一 group-18**:15 spirits 全在 group-18,无跨 group。
- **全屏遮罩**:Spirit116 Img=11(00011.png 4×4 通用遮罩拉伸),`IsVisible=1`(**可见**,异于 Layer8/18 的隐藏遮罩),Widget 45。运行时由脚本控制显隐。
- **个人信息背景**:Spirit117 `SpiritType=5`,Sprite `type=SLICED` + contentSize=592×402,源边框 70/70/70/70。⚠️ img=54 同图多边框(Layer2 用 100/80/100/80、Layer416 用 70/70/70/70),spriteFrame border 只能一套,延后(见 §1.9、图片映射 img=54 注)。
- **头像**:Spirit118 Img=25(00025.png 93×93),contentSize 105×103(拉伸)。
- **边缘图标**:Spirit494(右上 hc=587.5)、Spirit495(左下 hc=-587.5)均用 Img=10(00010.png 166×68)拉伸 105×103,贴屏幕边缘(疑关闭/装饰,按需绑定)。
- **签名底**:Spirit3156 `SpiritType=5`,img=407(00407.png 354×67),边框 20/20/20/20,Sprite `type=SLICED` + contentSize=391×79。⚠️ 边框延后(见 §1.9)。
- **动态文本**:8 个 Label 全是黑色(FontColor=`#000000`,FontSize=14),`Text` 均为占位(`"Spirit196"` / `"Spirit766"`),运行时替换为玩家昵称、ID、个性签名等实际信息。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空,按语义绑定 Spirit116 遮罩(点击关闭)、Spirit484 按钮、Spirit494/495 边缘图标(见 4.2)。
---
### 3.31 Layer21_RankList.prefab(rankList_Layer,排行榜列表)
源 Layer00021.xml:20 spirits,GroupID=84。**排行榜列表弹窗**,22 节点(1 root + 1 group + 20 children),13 Sprite + 7 Label。
```
Layer21_RankList UITransform 1600×720 Widget 45
└─ group-84 UITransform 1600×720 Widget 45
├─ Spirit605 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit606 背景 UITransform 1100×692 Widget 16 (hc=0) [9-slice]
├─ Spirit607 列表底 UITransform 465×511 Widget 16 (hc=-269.5) [9-slice]
├─ Spirit608 竖线 UITransform 2×565 Widget 16 (hc=0)
├─ Spirit609 图标 UITransform 166×68 Widget 16 (hc=-397)
├─ Spirit610 底部栏 UITransform 420×87 Widget 16 (hc=-304) [9-slice]
├─ Spirit629 箭头 UITransform 88×93 Widget 16 (hc=-487)
├─ Spirit630 头像框 UITransform 65×65 Widget 16 (hc=-387.5)
├─ Spirit631 名次图标 UITransform 80×80 Widget 16 (hc=-388)
├─ Spirit634 头像框 UITransform 105×105 Widget 16 (hc=111.5)
├─ Spirit635 装饰 UITransform 70×72 Widget 16 (hc=24)
├─ Spirit639 小图标 UITransform 44×40 Widget 16 (hc=230)
├─ Spirit3234 标题 UITransform 403×76 Widget 16 (hc=0.5)
├─ Spirit632 文字 UITransform 195×25 Widget 16 (hc=-222.5) [Label]
├─ Spirit633 文字 UITransform 75×25 Widget 16 (hc=-282.5) [Label]
├─ Spirit636 文字 UITransform 84×28 Widget 16 (hc=250) [Label]
├─ Spirit637 文字 UITransform 84×28 Widget 16 (hc=250) [Label]
├─ Spirit638 文字 UITransform 84×28 Widget 16 (hc=312) [Label]
├─ Spirit640 文字 UITransform 84×28 Widget 16 (hc=86) [Label 暗红]
└─ Spirit641 文字 UITransform 84×28 Widget 16 (hc=86) [Label 暗红]
```
**节点表(20 个:13 Sprite + 7 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit605 | 遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit606 | 背景 | Img=2(九宫格),1100×692,lpos(0,8) | Sprite sf=`8eb7acc3-…` type=SLICED;contentSize 1100×692;Widget 16 hc=0 |
| Spirit607 | 列表底 | Img=42(九宫格),465×511,lpos(-269.5,-37.5) | Sprite sf=`34daf5f4-…` type=SLICED;contentSize 465×511;Widget 16 hc=-269.5 |
| Spirit608 | 竖线 | Img=235,2×565,lpos(0,0.5) | Sprite sf=`2c1a10fe-…`;contentSize 2×565;Widget 16 hc=0 |
| Spirit609 | 图标 | Img=10,166×68,lpos(-397,184) | Sprite sf=`dcc4530b-…`;contentSize 166×68;Widget 16 hc=-397 |
| Spirit610 | 底部栏 | Img=234(九宫格),420×87,lpos(-304,-423.5) | Sprite sf=`fe744ec6-…` type=SLICED;contentSize 420×87;Widget 16 hc=-304 |
| Spirit629 | 箭头 | Img=233 帧 1,88×93,lpos(-487,-421.5) | Sprite sf=`fb86ab44-…`;contentSize 88×93;Widget 16 hc=-487 |
| Spirit630 | 头像框 | Img=116,65×65,lpos(-387.5,-423.5) | Sprite sf=`0c7ab485-…`;contentSize 65×65;Widget 16 hc=-387.5 |
| Spirit631 | 名次图标 | Img=106,80×80,lpos(-388,-423) | Sprite sf=`b6310388-…`;contentSize 80×80;Widget 16 hc=-388 |
| Spirit634 | 头像框 | Img=116,105×105,lpos(111.5,148.5) | Sprite sf=`0c7ab485-…`;contentSize 105×105;Widget 16 hc=111.5 |
| Spirit635 | 装饰 | Img=24,70×72,lpos(24,453) | Sprite sf=`7863c037-…`;contentSize 70×72;Widget 16 hc=24 |
| Spirit639 | 小图标 | Img=204 帧 1,44×40,lpos(230,99) | Sprite sf=`6b9ad554-…`;contentSize 44×40;Widget 16 hc=230 |
| Spirit3234 | 标题 | Img=425 帧 1,403×76,lpos(0.5,304) | Sprite sf=`97b4bd7f-…`;contentSize 403×76;Widget 16 hc=0.5 |
| Spirit632 | 文字 | FontSize=14 黑,195×25,lpos(-222.5,-406.5) | Label fontSize=14 color=黑;Text="色丰富飞的放到的是是 "(占位) |
| Spirit633 | 文字 | FontSize=14 黑,75×25,lpos(-282.5,-439.5) | Label fontSize=14 color=黑;Text="Spirit632"(占位) |
| Spirit636 | 文字 | FontSize=16 黑,84×28,lpos(250,195) | Label fontSize=16 color=黑;Text="Spirit632"(占位) |
| Spirit637 | 文字 | FontSize=16 黑,84×28,lpos(250,147) | Label fontSize=16 color=黑;Text="Spirit632"(占位) |
| Spirit638 | 文字 | FontSize=16 黑,84×28,lpos(312,99) | Label fontSize=16 color=黑;Text="Spirit632"(占位) |
| Spirit640 | 文字 | FontSize=16 暗红,84×28,lpos(86,-111) | Label fontSize=16 color=#6C130F(108,19,15);Text="Spirit632"(占位) |
| Spirit641 | 文字 | FontSize=16 暗红,84×28,lpos(86,24) | Label fontSize=16 color=#6C130F(108,19,15);Text="Spirit632"(占位) |
**脚本驱动要点**:
- **单一 group-84**:20 spirits 全在 group-84,无跨 group。
- **全屏遮罩**:Spirit605 Img=11(00011.png 4×4 通用遮罩拉伸),`IsVisible=1`(可见),Widget 45。
- **排行榜背景**:Spirit606 `SpiritType=5`,img=2(00002.png 597×446),边框 55/45/55/45,Sprite `type=SLICED` + contentSize=1100×692。⚠️ img=2 同图多边框(见图片映射 img=2 注),spriteFrame border 延后。
- **列表底**:Spirit607 `SpiritType=5`,img=42(00042.png),边框 53/48/53/48(同 Layer606 投票底),Sprite `type=SLICED` + contentSize=465×511。
- **底部栏**:Spirit610 `SpiritType=5`,img=234(00234.png 420×87),边框 200/43/200/43,Sprite `type=SLICED` + contentSize=420×87。⚠️ 边框延后。
- **竖线分隔**:Spirit608 Img=235(00235.png 2×565 细竖线),contentSize 2×565,排行榜左右分区。
- **帧 sprite**:Spirit629(img=233 帧 1 箭头)、Spirit639(img=204 帧 1 小图标)、Spirit3234(img=425 帧 1 标题)。
- **⚠️ 源数据越界(逐字复刻,不兜底)**:底部栏/箭头/头像框/文字(Spirit610/629/630/631/632/633,源 `Top=740~787`)lpos.y 落在屏幕下方(-406~-439);Spirit635(源 `Top=-129`)lpos.y=453 落在屏幕上方。均按源坐标逐字复刻(数据源权威,下游不兜底),运行时脚本按实际列表内容重新布局。
- **动态文本**:7 个 Label `Text` 均为占位(`"Spirit632"` / `"色丰富飞的放到的是是 "`),运行时替换为排行榜条目(玩家昵称、分数等)。Spirit640/641 用暗红色(`#6C130F`,R=108/G=19/B=15)标名次,其余黑色。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空,按语义绑定 Spirit605 遮罩(点击关闭)、Spirit629 箭头(翻页/返回)、列表条目(见 4.2)。
---
### 3.32 Layer12_CombatLayer.prefab(CombatLayer,战绩弹窗)
源 Layer00012.xml:27 spirits,GroupID=7/8/9。**战绩弹窗**(标题区常驻 + 两页内容纵向滑动),31 节点(1 root + 3 group + 27 children),21 Sprite + 6 Label。
```
Layer12_CombatLayer UITransform 1600×720 Widget 45
├─ group-7 UITransform 1600×720 Widget 45(标题区 9 节点)
│ ├─ Spirit49 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ Spirit48 背景 UITransform 1231×692 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit70 标题 UITransform 510×138 Widget 16 (hc=379)
│ ├─ Spirit683 UITransform 106×26 Widget 16 (hc=238)
│ ├─ Spirit684 UITransform 14×22 Widget 16 (hc=308) [帧动画]
│ ├─ Spirit685 UITransform 45×25 Widget 16 (hc=-176.5) [Label 黄]
│ ├─ Spirit689 UITransform 403×76 Widget 16 (hc=-214.5)
│ ├─ Spirit83 UITransform 576×77 Widget 16 (hc=0)
│ └─ Spirit82 UITransform 289×26 Widget 16 (hc=-379.5)
├─ group-8 UITransform 1600×720 Widget 45(战绩页一 10 节点)
│ ├─ Spirit50 底 UITransform 1073×100 Widget 16 (hc=-91.5)
│ ├─ Spirit52 前景 UITransform 800×200 Widget 16 (hc=-204)
│ ├─ Spirit53 返回 UITransform 292×102 Widget 16 (hc=-247)
│ ├─ Spirit63 底 UITransform 300×100 Widget 16 (hc=-426)
│ ├─ Spirit64 横条 UITransform 1152×158 Widget 16 (hc=20)
│ ├─ Spirit65 文字 UITransform 76×25 Widget 16 (hc=-469) [Label]
│ ├─ Spirit66 文字 UITransform 76×25 Widget 16 (hc=-360) [Label]
│ ├─ Spirit67 文字 UITransform 10×25 Widget 16 (hc=-191) [Label 白]
│ ├─ Spirit51 详情1 UITransform 70×141 Widget 16 (hc=537)
│ └─ Spirit86 分隔线 UITransform 697×2 Widget 16 (hc=129.5)
└─ group-9 UITransform 1600×720 Widget 45(战绩页二 8 节点)
├─ Spirit57 底 UITransform 1073×100 Widget 16 (hc=-166.5)
├─ Spirit56 前景 UITransform 800×200 Widget 16 (hc=-302)
├─ Spirit87 底 UITransform 300×100 Widget 16 (hc=-392)
├─ Spirit88 横条 UITransform 1152×158 Widget 16 (hc=28)
├─ Spirit54 查牌 UITransform 70×141 Widget 16 (hc=552)
├─ Spirit89 文字 UITransform 128×42 Widget 16 (hc=-396) [Label]
├─ Spirit90 文字 UITransform 76×25 Widget 16 (hc=-143) [Label 白]
└─ Spirit91 分隔线 UITransform 697×2 Widget 16 (hc=144.5)
```
**group-7 标题区(9 节点:7 Sprite + 2 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit49 | 战绩页一遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit48 | 战绩背景 | Img=353(九宫格),1231×692,lpos(0.5,0) | Sprite sf=`064548fb-…` type=SLICED;contentSize 1231×692;Widget 16 hc=0.5 |
| Spirit70 | 战绩标题 | Img=40,510×138,lpos(379,568) | Sprite sf=`05398908-…`;contentSize 510×138;Widget 16 hc=379 |
| Spirit683 | Spirit683 | Img=171(fi=0→帧1),106×26,lpos(238,-306) | Sprite sf=`372dab1a-…`;contentSize 106×26;Widget 16 hc=238 |
| Spirit684 | Spirit684 | Img=172 帧 1(FrameStyle=1 帧动画),14×22,lpos(308,-306) | Sprite sf=`eaf82c8a-…`;contentSize 14×22;Widget 16 hc=308 |
| Spirit685 | Spirit685 | 45×25,lpos(-176.5,-305.5) | Label fontSize=14 color=#E4EA1E(228,234,30);Text=" "(9 空格装饰) |
| Spirit689 | Spirit689 | Img=6 帧 1,403×76,lpos(-214.5,557) | Sprite sf=`e72b79a6-…`;contentSize 403×76;Widget 16 hc=-214.5 |
| Spirit83 | Spirit83 | Img=357 帧 1,576×77,lpos(0,296.5) | Sprite sf=`f9adb6d0-…`;contentSize 576×77;Widget 16 hc=0 |
| Spirit82 | Spirit82 | Img=355 帧 1(fi=0→帧1),289×26,lpos(-379.5,-306) | Sprite sf=`99f3ce26-…`;contentSize 289×26;Widget 16 hc=-379.5 |
**group-8 战绩页一(10 节点:8 Sprite + 2 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit50 | 战绩页一底 | Img=10,1073×100,lpos(-91.5,-482) | Sprite sf=`dcc4530b-…`;contentSize 1073×100;Widget 16 hc=-91.5 |
| Spirit52 | 战绩前景 | Img=10,800×200,lpos(-204,-762) | Sprite sf=`dcc4530b-…`;contentSize 800×200;Widget 16 hc=-204 |
| Spirit53 | 战绩页一返回 | Img=34 帧 2,292×102,lpos(-247,-611) | Sprite sf=`65ec6a90-…`;contentSize 292×102;Widget 16 hc=-247 |
| Spirit63 | 战绩页1底 | Img=10(Frame=2 回绕帧1),300×100,lpos(-426,196) | Sprite sf=`dcc4530b-…`;contentSize 300×100;Widget 16 hc=-426 |
| Spirit64 | 战绩页1横条 | Img=23(Frame=2 回绕帧1),1152×158,lpos(20,-516) | Sprite sf=`27ec9c8a-…`;contentSize 1152×158;Widget 16 hc=20 |
| Spirit65 | 战绩文字内容 | 76×25,lpos(-469,-475.5) | Label fontSize=14 color=黑;Text="战绩文字"(占位) |
| Spirit66 | Spirit66 | 76×25,lpos(-360,-477.5) | Label fontSize=14 color=黑;Text="战绩文字"(占位) |
| Spirit67 | Spirit67 | 10×25,lpos(-191,-479.5) | Label fontSize=14 color=白;Text="a"(占位) |
| Spirit51 | 详情1 | Img=35 帧 1,70×141,lpos(537,-512.5) | Sprite sf=`ecfcc3d2-…`;contentSize 70×141;Widget 16 hc=537 |
| Spirit86 | Spirit86 | Img=356(Frame=1 回绕帧1),697×2,lpos(129.5,-515) | Sprite sf=`c31c03c5-…`;contentSize 697×2;Widget 16 hc=129.5 |
**group-9 战绩页二(8 节点:6 Sprite + 2 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit57 | 战绩页二底 | Img=10,1073×100,lpos(-166.5,-551) | Sprite sf=`dcc4530b-…`;contentSize 1073×100;Widget 16 hc=-166.5 |
| Spirit56 | 战绩页二前景 | Img=10,800×200,lpos(-302,-804) | Sprite sf=`dcc4530b-…`;contentSize 800×200;Widget 16 hc=-302 |
| Spirit87 | Spirit87 | Img=10(Frame=2 回绕帧1),300×100,lpos(-392,176) | Sprite sf=`dcc4530b-…`;contentSize 300×100;Widget 16 hc=-392 |
| Spirit88 | Spirit88 | Img=23(Frame=2 回绕帧1),1152×158,lpos(28,-625) | Sprite sf=`27ec9c8a-…`;contentSize 1152×158;Widget 16 hc=28 |
| Spirit54 | 查牌 | Img=35 帧 2,70×141,lpos(552,-619.5) | Sprite sf=`d1f31383-…`;contentSize 70×141;Widget 16 hc=552 |
| Spirit89 | Spirit89 | 128×42,lpos(-396,-618) | Label fontSize=24 color=黑;Text="战绩文字"(占位) |
| Spirit90 | Spirit90 | 76×25,lpos(-143,-592.5) | Label fontSize=14 color=白;Text="昵称积分"(占位) |
| Spirit91 | Spirit91 | Img=356(Frame=1 回绕帧1),697×2,lpos(144.5,-628) | Sprite sf=`c31c03c5-…`;contentSize 697×2;Widget 16 hc=144.5 |
**脚本驱动要点**:
- **三 group 滑动页**:group-7 标题区(常驻顶部)、group-8 战绩页一、group-9 战绩页二。源数据把两页内容用**负 Y**(Top 大 → lpos.y 落屏幕下方)错开:group-8 底 lpos.y=-482、前景 -762,group-9 底 -551、前景 -804,形成「标题区常驻 + 两页纵向滑动切换」的设计。脚本按页显隐/滑动 group-8/group-9。
- **全屏遮罩**:Spirit49 Img=11(00011.png 4×4 通用遮罩拉伸),`IsVisible=1`(可见),Widget 45。
- **九宫格背景**:Spirit48 `SpiritType=5`,Img=353(00353.png 1231×692),边框 250/200/346/245,Sprite `type=SLICED` + contentSize=1231×692。⚠️ 边框延后(见图片映射 img=353,改 spriteFrame .meta 需先征同意)。
- **帧动画**:Spirit684 `FrameStyle=1`,Img=172(00172_*.png 10 帧 14×22),fi=1 → 帧 1(00172_01.png),战绩装饰动画。
- **帧号循环取模**:img=10/23/356(`frame_all=1`)的 FrameIndex(2/1)循环回绕帧 1 直接用 bmp;img=6/34/35/171/172/355/357 多帧按 fi 取帧,fi=0 → 帧 1(见 1.10)。Spirit51 详情1 帧 1、Spirit54 查牌 帧 2(同一 img=35 两帧)。
- **动态文本**:6 个 Label 占位("战绩文字"/"a"/"昵称积分"/" "),运行时替换为战绩数据(对局结果、昵称、积分等)。Spirit67/90 白字(昵称/积分值)、Spirit65/66/89 黑字(列标题/内容)、Spirit685 黄色 9 空格(装饰/隐藏用途)。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空,按语义绑定 Spirit49 遮罩(点击关闭)、Spirit53 返回、Spirit51 详情、Spirit54 查牌,其余装饰按需(见 4.2)。
---
### 3.33 Layer7_ewm.prefab(ewm_Layer,二维码弹窗)
源 Layer00007.xml:30 spirits,GroupID=104/105(另 1 个 G=0)。**二维码弹窗**(两个结构对称的弹窗 + 一个全局帧动画),33 节点(1 root + 2 group + 30 children),23 Sprite + 7 Label。⚠️ 全部 spirit 无语义名(XML `Name` 均为 `Spirit{N}`),按钮/文字语义需按结构位置推断。
```
Layer7_ewm UITransform 1600×720 Widget 45
├─ group-104 UITransform 1600×720 Widget 45(二维码弹窗一 17 节点)
│ ├─ Spirit3200 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ Spirit3201 背景 UITransform 453×621 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit3202 标题小字 UITransform 78×26 Widget 16 (hc=0)
│ ├─ Spirit3204 内容底 UITransform 427×301 Widget 16 (hc=0.5)
│ ├─ Spirit3211 内容底 UITransform 455×142 Widget 16 (hc=3.5)
│ ├─ Spirit3213 内容底 UITransform 460×199 Widget 16 (hc=2)
│ ├─ Spirit3203 关闭 UITransform 100×100 Widget 16 (hc=185)
│ ├─ Spirit3205 标题 UITransform 316×49 Widget 16 (hc=0) [9-slice]
│ ├─ Spirit3206 按钮 UITransform 79×41 Widget 16 (hc=66.5)
│ ├─ Spirit3207 底 UITransform 420×49 Widget 16 (hc=-69) [9-slice]
│ ├─ Spirit3208 按钮 UITransform 79×41 Widget 16 (hc=94.5)
│ ├─ Spirit3209 文字 UITransform 85×25 Widget 16 (hc=-210.5) [Label]
│ ├─ Spirit3210 底 UITransform 403×55 Widget 16 (hc=0.5)
│ ├─ Spirit3212 文字 UITransform 9×25 Widget 16 (hc=-134.5) [Label]
│ ├─ Spirit3216 按钮 UITransform 79×41 Widget 16 (hc=-69.5)
│ ├─ Spirit3260 图标 UITransform 50×50 Widget 16 (hc=-176)
│ └─ Spirit3261 文字 UITransform 7×21 Widget 16 (hc=-141.5) [Label]
├─ group-105 UITransform 1600×720 Widget 45(二维码弹窗二 12 节点)
│ ├─ Spirit3218 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ Spirit3219 背景 UITransform 453×621 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit3224 文字 UITransform 85×25 Widget 16 (hc=-33.5) [Label 白]
│ ├─ Spirit3227 内容底 UITransform 425×468 Widget 16 (hc=0.5)
│ ├─ Spirit3220 内容底 UITransform 455×142 Widget 16 (hc=0.5)
│ ├─ Spirit3221 内容底 UITransform 460×116 Widget 16 (hc=0)
│ ├─ Spirit3222 关闭 UITransform 100×100 Widget 16 (hc=201)
│ ├─ Spirit3223 底 UITransform 420×49 Widget 16 (hc=-5) [9-slice]
│ ├─ Spirit3225 底 UITransform 420×49 Widget 16 (hc=3) [9-slice]
│ ├─ Spirit3226 文字 UITransform 85×25 Widget 16 (hc=-148.5) [Label]
│ ├─ Spirit3229 文字 UITransform 85×25 Widget 16 (hc=-69.5) [Label]
│ └─ Spirit3230 文字 UITransform 85×25 Widget 16 (hc=54.5) [Label]
└─ Spirit3228 帧动画 UITransform 25×36 Widget 16 (hc=-204.5)
```
**group-104 二维码弹窗一(17 节点:14 Sprite + 3 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3200 | 遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit3201 | 背景 | Img=411(九宫格),453×621,lpos(0.5,-0.5) | Sprite sf=`51c575a7-…` type=SLICED;contentSize 453×621;Widget 16 hc=0.5 |
| Spirit3202 | 标题小字 | Img=414 帧 1,78×26,lpos(0,278) | Sprite sf=`0b495d59-…`;contentSize 78×26;Widget 16 hc=0 |
| Spirit3204 | 内容底 | Img=10,427×301,lpos(0.5,-82.5) | Sprite sf=`dcc4530b-…`;contentSize 427×301;Widget 16 hc=0.5 |
| Spirit3211 | 内容底 | Img=10,455×142,lpos(3.5,-289) | Sprite sf=`dcc4530b-…`;contentSize 455×142;Widget 16 hc=3.5 |
| Spirit3213 | 内容底 | Img=10,460×199,lpos(2,260.5) | Sprite sf=`dcc4530b-…`;contentSize 460×199;Widget 16 hc=2 |
| Spirit3203 | 关闭 | Img=415,100×100,lpos(185,281) | Sprite sf=`fe285a2f-…`;contentSize 100×100;Widget 16 hc=185 |
| Spirit3205 | 标题 | Img=412(九宫格),316×49,lpos(0,209.5) | Sprite sf=`0ca224e1-…` type=SLICED;contentSize 316×49;Widget 16 hc=0 |
| Spirit3206 | 按钮 | Img=413 帧 2,79×41,lpos(66.5,156.5) | Sprite sf=`b6ea7c41-…`;contentSize 79×41;Widget 16 hc=66.5 |
| Spirit3207 | 底 | Img=419(九宫格),420×49,lpos(-69,-464.5) | Sprite sf=`050eaa6d-…` type=SLICED;contentSize 420×49;Widget 16 hc=-69 |
| Spirit3208 | 按钮 | Img=413 帧 1,79×41,lpos(94.5,-464.5) | Sprite sf=`940bbbba-…`;contentSize 79×41;Widget 16 hc=94.5 |
| Spirit3209 | 文字 | 85×25,lpos(-210.5,-464.5) | Label fontSize=14 color=黑;Text="Spirit3209"(占位) |
| Spirit3210 | 底 | Img=416,403×55,lpos(0.5,-270.5) | Sprite sf=`154011e6-…`;contentSize 403×55;Widget 16 hc=0.5 |
| Spirit3212 | 文字 | 9×25,lpos(-134.5,209.5) | Label fontSize=14 color=黑;Text="s"(占位) |
| Spirit3216 | 按钮 | Img=413 帧 1,79×41,lpos(-69.5,156.5) | Sprite sf=`940bbbba-…`;contentSize 79×41;Widget 16 hc=-69.5 |
| Spirit3260 | 图标 | Img=432 帧 1,50×50,lpos(-176,104) | Sprite sf=`018c5320-…`;contentSize 50×50;Widget 16 hc=-176 |
| Spirit3261 | 文字 | 7×21,lpos(-141.5,103.5) | Label fontSize=12 color=黑;Text="s"(占位) |
**group-105 二维码弹窗二(12 节点:8 Sprite + 4 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3218 | 遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit3219 | 背景 | Img=411(九宫格),453×621,lpos(0.5,-0.5) | Sprite sf=`51c575a7-…` type=SLICED;contentSize 453×621;Widget 16 hc=0.5 |
| Spirit3224 | 文字 | 85×25,lpos(-33.5,278.5) | Label fontSize=14 color=白;Text="Spirit3224"(占位) |
| Spirit3227 | 内容底 | Img=10,425×468,lpos(0.5,6) | Sprite sf=`dcc4530b-…`;contentSize 425×468;Widget 16 hc=0.5 |
| Spirit3220 | 内容底 | Img=10,455×142,lpos(0.5,-305) | Sprite sf=`dcc4530b-…`;contentSize 455×142;Widget 16 hc=0.5 |
| Spirit3221 | 内容底 | Img=10,460×116,lpos(0,300) | Sprite sf=`dcc4530b-…`;contentSize 460×116;Widget 16 hc=0 |
| Spirit3222 | 关闭 | Img=415,100×100,lpos(201,279) | Sprite sf=`fe285a2f-…`;contentSize 100×100;Widget 16 hc=201 |
| Spirit3223 | 底 | Img=419(九宫格),420×49,lpos(-5,-400.5) | Sprite sf=`050eaa6d-…` type=SLICED;contentSize 420×49;Widget 16 hc=-5 |
| Spirit3225 | 底 | Img=420(九宫格),420×49,lpos(3,-274.5) | Sprite sf=`9222540c-…` type=SLICED;contentSize 420×49;Widget 16 hc=3 |
| Spirit3226 | 文字 | 85×25,lpos(-148.5,-274.5) | Label fontSize=14 color=黑;Text="Spirit3226"(占位) |
| Spirit3229 | 文字 | 85×25,lpos(-69.5,-400.5) | Label fontSize=14 color=黑;Text="Spirit3226"(占位) |
| Spirit3230 | 文字 | 85×25,lpos(54.5,-402.5) | Label fontSize=14 color=黑;Text="Spirit3226"(占位) |
**root 下全局节点(1 个)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3228 | 帧动画 | Img=417 帧 1(FrameStyle=1 帧动画),25×36,lpos(-204.5,-389) | Sprite sf=`0c2d691f-…`;contentSize 25×36;Widget 16 hc=-204.5 |
**脚本驱动要点**:
- **双弹窗结构对称**:group-104(17 节点)与 group-105(12 节点)是两个结构相近的二维码弹窗(背景/关闭/内容底/文字一致),区别在 group-104 多标题(Spirit3205/3202)、3 个按钮(Spirit3206/3208/3216)、图标(Spirit3260)。脚本按业务显隐/切换两个 group(如「绑定二维码」vs「支付/分享二维码」)。
- **全屏遮罩**:Spirit3200/3218 Img=11(00011.png 4×4 通用遮罩拉伸),Widget 45,两个弹窗各一个。
- **九宫格背景**:Spirit3201/3219 Img=411(00411.png 182×188),边框 90/90/90/90,Sprite `type=SLICED` + contentSize=453×621。Spirit3205 Img=412(边框 95/20/95/20 标题),Spirit3207/3223 Img=419、Spirit3225 Img=420(边框 55/20/55/20 底/列表)。⚠️ 四处九宫格边框均延后(改 spriteFrame .meta 需先征同意)。
- **帧动画**:Spirit3228 `FrameStyle=1`,Img=417(00417_*.png 13 帧 25×36),fi=1 → 帧 1(00417_01.png),挂 root 的全局动画(光标/加载指示)。⚠️ 无 GroupID(G=0),不随两弹窗显隐。
- **帧号循环取模**:img=10/11/415/416(`frame_all=1`)的 FrameIndex(1/2)循环回绕帧 1 直接用 bmp;img=413/414/432 多帧按 fi 取帧(fi=1→帧1、fi=2→帧2)。见 1.10。Spirit3206 帧 2、Spirit3208/3216 帧 1(img=413 同图两帧,语义为按钮两态)。
- **动态文本**:7 个 Label 占位("Spirit3209"/"s"/"Spirit3224"/"Spirit3226"×3/"s"),运行时替换为二维码相关文字(提示语、链接、验证码等)。Spirit3224 白字(标题/高亮),其余黑字。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空,且无语义名,按结构推断——Spirit3200/3218 遮罩(点击关闭)、Spirit3203/3222 关闭按钮、Spirit3206/3208/3216 按钮(img=413 两态,按需绑定),其余装饰/文本按需(见 4.2)。
---
### 3.34 Layer9_Feedback.prefab(Feedback_Layer,反馈/通知/二维码/房间列表)
源 Layer00009.xml:34 spirits,GroupID=74/12/42/98。**四功能弹窗层**(反馈 + 通知 + 二维码 + 房间列表),39 节点(1 root + 4 group + 34 children),32 Sprite + 2 Label。
```
Layer9_Feedback UITransform 1600×720 Widget 45
├─ group-74 UITransform 1600×720 Widget 45(反馈弹窗 7 节点)
│ ├─ 反馈遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ 反馈背景 UITransform 1200×200 Widget 16 (hc=0) [9-slice]
│ ├─ 反馈提交 UITransform 135×80 Widget 16 (hc=497.5)
│ ├─ 反馈输入内容 UITransform 950×90 Widget 16 (hc=-77) [Label]
│ ├─ Spirit3266 UITransform 135×80 Widget 16 (hc=494.5)
│ ├─ Spirit3265 UITransform 135×80 Widget 16 (hc=494.5)
│ └─ 反馈标题 UITransform 181×70 Widget 16 (hc=23.5)
├─ group-12 UITransform 1600×720 Widget 45(通知 17 节点)
│ ├─ 通知遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ 通知背景 UITransform 1029×603 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit404 UITransform 50×50 Widget 16 (hc=-207)
│ ├─ 通知内容 UITransform 21×28 Widget 16 (hc=-219.5)[Label]
│ ├─ Spirit576 UITransform 250×40 Widget 16 (hc=350)
│ ├─ Spirit3102 UITransform 752×470 Widget 16 (hc=101)
│ ├─ Spirit3105 UITransform 770×400 Widget 16 (hc=-22)
│ ├─ Spirit3106 UITransform 770×400 Widget 16 (hc=-6)
│ ├─ 通知标题 UITransform 510×138 Widget 16 (hc=-122)
│ ├─ 通知关闭 UITransform 83×84 Widget 16 (hc=220.5)
│ ├─ 通知标题内容 UITransform 403×76 Widget 16 (hc=0.5)
│ ├─ Spirit570/571/572 UITransform 236×100 Widget 16 (hc=-376)
│ └─ Spirit573/574/575 UITransform 125×40 Widget 16 (hc=-379.5)
├─ group-42 UITransform 1600×720 Widget 45(二维码 5 节点)
│ ├─ 二维码遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
│ ├─ Spirit342 UITransform 955×640 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit343 UITransform 321×287 Widget 16 (hc=115.5)
│ ├─ Spirit344 UITransform 371×51 Widget 16 (hc=-293.5)
│ └─ Spirit345 UITransform 315×74 Widget 16 (hc=115.5)
└─ group-98 UITransform 1600×720 Widget 45(房间列表 5 节点)
├─ Spirit103 UITransform 1600×720 Widget 45(全屏拉伸)
├─ 房间列表背景 UITransform 280×530 Widget 16 (hc=-500) [9-slice]
├─ Spirit100 UITransform 264×80 Widget 16 (hc=-794)
├─ Spirit101 UITransform 100×50 Widget 16 (hc=-783)
└─ Spirit102 UITransform 14×19 Widget 16 (hc=-755)
```
**group-74 反馈弹窗(7 节点:6 Sprite + 1 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit548 | 反馈遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit549 | 反馈背景 | Img=41(九宫格),1200×200,lpos(0,218) | Sprite sf=`3e7492cb-…` type=SLICED;contentSize 1200×200;Widget 16 hc=0 |
| Spirit550 | 反馈提交 | Img=168,135×80,lpos(497.5,214) | Sprite sf=`6bc626b8-…`;contentSize 135×80;Widget 16 hc=497.5 |
| Spirit551 | 反馈输入内容 | 950×90,lpos(-77,214) | Label fontSize=20 color=黑;Text=""(空,运行时填充) |
| Spirit3266 | Spirit3266 | Img=438 帧 1,135×80,lpos(494.5,176) | Sprite sf=`a933d0bf-…`;contentSize 135×80;Widget 16 hc=494.5 |
| Spirit3265 | Spirit3265 | Img=438 帧 2(源 Frame=8 回绕),135×80,lpos(494.5,258) | Sprite sf=`fdc6b65e-…`;contentSize 135×80;Widget 16 hc=494.5 |
| Spirit676 | 反馈标题 | Img=169,181×70,lpos(23.5,483) | Sprite sf=`02d0a481-…`;contentSize 181×70;Widget 16 hc=23.5 |
**group-12 通知(17 节点:15 Sprite + 1 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit77 | 通知遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit78 | 通知背景 | Img=346(九宫格),1029×603,lpos(0.5,-0.5) | Sprite sf=`03393c45-…` type=SLICED;contentSize 1029×603;Widget 16 hc=0.5 |
| Spirit404 | Spirit404 | Img=10(源 Frame=3 回绕帧 1),50×50,lpos(-207,167) | Sprite sf=`dcc4530b-…`;contentSize 50×50;Widget 16 hc=-207 |
| Spirit81 | 通知内容 | 21×28,lpos(-219.5,178) | Label fontSize=16 color=#662910 (102,41,16);Text="消"(占位) |
| Spirit576 | Spirit576 | Img=218,250×40,lpos(350,-239) | Sprite sf=`ac88bed1-…`;contentSize 250×40;Widget 16 hc=350 |
| Spirit3102 | Spirit3102 | Img=338,752×470,lpos(101,-31) | Sprite sf=`200f41c0-…`;contentSize 752×470;Widget 16 hc=101 |
| Spirit3105 | Spirit3105 | Img=339,770×400,lpos(-22,-766) | Sprite sf=`cb2429ec-…`;contentSize 770×400;Widget 16 hc=-22 |
| Spirit3106 | Spirit3106 | Img=340,770×400,lpos(-6,-782) | Sprite sf=`dbeaba27-…`;contentSize 770×400;Widget 16 hc=-6 |
| Spirit79 | 通知标题 | Img=40,510×138,lpos(-122,587) | Sprite sf=`05398908-…`;contentSize 510×138;Widget 16 hc=-122 |
| Spirit80 | 通知关闭 | Img=33,83×84,lpos(220.5,452) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=220.5 |
| Spirit692 | 通知标题内容 | Img=6 帧 3,403×76,lpos(0.5,255) | Sprite sf=`5febca8f-…`;contentSize 403×76;Widget 16 hc=0.5 |
| Spirit570 | Spirit570 | Img=216 帧 2,236×100,lpos(-376,154) | Sprite sf=`a42d050f-…`;contentSize 236×100;Widget 16 hc=-376 |
| Spirit571 | Spirit571 | Img=216 帧 2,236×100,lpos(-376,62) | Sprite sf=`a42d050f-…`;contentSize 236×100;Widget 16 hc=-376 |
| Spirit572 | Spirit572 | Img=216 帧 2,236×100,lpos(-376,-30) | Sprite sf=`a42d050f-…`;contentSize 236×100;Widget 16 hc=-376 |
| Spirit573 | Spirit573 | Img=217 帧 1,125×40,lpos(-379.5,156) | Sprite sf=`87d01b20-…`;contentSize 125×40;Widget 16 hc=-379.5 |
| Spirit574 | Spirit574 | Img=217 帧 3,125×40,lpos(-379.5,63) | Sprite sf=`9fd0b3df-…`;contentSize 125×40;Widget 16 hc=-379.5 |
| Spirit575 | Spirit575 | Img=217 帧 5,125×40,lpos(-379.5,-28) | Sprite sf=`a972c966-…`;contentSize 125×40;Widget 16 hc=-379.5 |
**group-42 二维码(5 节点:5 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit341 | 二维码遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit342 | Spirit342 | Img=423(九宫格),955×640,lpos(0.5,0) | Sprite sf=`dfdcc5f5-…` type=SLICED;contentSize 955×640;Widget 16 hc=0.5 |
| Spirit343 | Spirit343 | Img=115,321×287,lpos(115.5,-49.5) | Sprite sf=`06403876-…`;contentSize 321×287;Widget 16 hc=115.5 |
| Spirit344 | Spirit344 | Img=114,371×51,lpos(-293.5,-476.5) | Sprite sf=`0c0c1c72-…`;contentSize 371×51;Widget 16 hc=-293.5 |
| Spirit345 | Spirit345 | Img=80,315×74,lpos(115.5,-280) | Sprite sf=`b1efcc9a-…`;contentSize 315×74;Widget 16 hc=115.5 |
**group-98 房间列表(5 节点:5 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit103 | Spirit103 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit98 | 房间列表背景 | Img=38(九宫格),280×530,lpos(-500,0) | Sprite sf=`083b1c88-…` type=SLICED;contentSize 280×530;Widget 16 hc=-500 |
| Spirit100 | Spirit100 | Img=50(源 Frame=8 回绕帧 1),264×80,lpos(-794,80) | Sprite sf=`5f783910-…`;contentSize 264×80;Widget 16 hc=-794 |
| Spirit101 | Spirit101 | Img=11(源 Frame=8 回绕帧 1),100×50,lpos(-783,237) | Sprite sf=`eabf148a-…`;contentSize 100×50;Widget 16 hc=-783 |
| Spirit102 | Spirit102 | Img=49 帧 1(FrameStyle=1 帧动画),14×19,lpos(-755,82.5) | Sprite sf=`9d49bb70-…`;contentSize 14×19;Widget 16 hc=-755 |
**脚本驱动要点**:
- **四弹窗独立显隐**:group-74(反馈)/ group-12(通知)/ group-42(二维码)/ group-98(房间列表)是四个互斥的功能弹窗,脚本按业务显隐/切换各 group(如主界面「反馈」按钮 → 显 group-74,「通知」→ 显 group-12,「二维码」→ 显 group-42,「房间列表」→ 显 group-98)。
- **全屏遮罩**:Spirit548/77/341/103 各 group 一个 Img=11(00011.png 4×4 通用遮罩),Widget 45,点击关闭对应弹窗。
- **九宫格背景**:Spirit549 Img=41(边框 55/45/55/45 反馈背景,复用协议/绑定背景)、Spirit78 Img=346(边框 250/200/346/245 通知背景)、Spirit342 Img=423(边框 55/45/55/45 二维码背景)、Spirit98 Img=38(边框 50/50/50/50 房间列表背景)。⚠️ 四处九宫格边框均延后(改 spriteFrame .meta 需先征同意)。
- **帧动画**:Spirit102 `FrameStyle=1`,Img=49(00049_*.png 10 帧 14×19 数字 0-9),fi=1 → 帧 1(00049_01.png),运行时脚本按房间号逐位切 spriteFrame(数字帧动画,见 1.10)。
- **帧号循环取模**:img=438(`frame_all=2`)Spirit3265 源 Frame=8 → 回绕帧 2;img=10/11/50(`frame_all=1`)的 FrameIndex(3/8/8)循环回绕帧 1 直接用 bmp;img=6 帧 3、img=216 帧 2、img=217 帧 1/3/5 按 fi 取帧。见 1.10。
- **动态文本**:2 个 Label——Spirit551 反馈输入内容(`""` 空,fs=20 黑,运行时填充用户输入)、Spirit81 通知内容(`"消"` 占位,fs=16 深棕 #662910,运行时替换为通知正文)。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空——Spirit550 反馈提交(提交按钮)、Spirit548/77/341/103 遮罩(点击关闭)、Spirit80 通知关闭、Spirit100/101 房间列表项(进入房间)、Spirit570~575 通知条目/分类标签(查看通知/切换分类),按需绑定(见 4.2)。
---
### 3.35 Layer29_PhoneInfo.prefab(PhoneInfo_Layer,手机验证/白名单管理)
源 Layer00029.xml(UTF-8 编码):38 spirits,GroupID=106/108。**双功能弹窗层**(手机验证 + 白名单管理/搜索玩家),41 节点(1 root + 2 group + 38 children),28 Sprite + 10 Label。
```
Layer29_PhoneInfo UITransform 1600×720 Widget 45
├─ group-106 UITransform 1600×720 Widget 45(手机验证弹窗 15 节点)
│ ├─ Spirit3241 遮罩 UITransform 1600×720 Widget 45(全屏拉伸,active=false)
│ ├─ Spirit3242 背景 UITransform 577×406 Widget 16 (hc=0.5) [9-slice]
│ ├─ Spirit3243 输入框 UITransform 424×61 Widget 16 (hc=3) [9-slice]
│ ├─ Spirit3244 输入框 UITransform 279×61 Widget 16 (hc=-58.5) [9-slice]
│ ├─ Spirit3245 验证码 UITransform 148×73 Widget 16 (hc=144)
│ ├─ Spirit3246 帧动画 UITransform 42×28 Widget 16 (hc=101)
│ ├─ Spirit3251 关闭 UITransform 83×84 Widget 16 (hc=273.5)
│ ├─ Spirit3253 确认 UITransform 197×73 Widget 16 (hc=0.5)
│ ├─ Spirit3252 主按钮 UITransform 284×84 Widget 16 (hc=0)
│ ├─ Spirit3249 标签 UITransform 181×26 Widget 16 (hc=-53.5)
│ ├─ Spirit3250 标签 UITransform 181×26 Widget 16 (hc=-53.5)
│ ├─ Spirit3247 帧动画 UITransform 21×28 Widget 16 (hc=-133.5)
│ ├─ Spirit3248 帧动画 UITransform 42×28 Widget 16 (hc=-123)
│ ├─ Spirit3262 图标 UITransform 45×62 Widget 16 (hc=-186.5)
│ └─ Spirit3263 图标 UITransform 45×62 Widget 16 (hc=-186.5)
└─ group-108 UITransform 1600×720 Widget 45(白名单管理/搜索玩家 23 节点)
├─ Spirit3270 遮罩 UITransform 1600×720 Widget 45(全屏拉伸)
├─ Spirit3271 背景 UITransform 591×621 Widget 16 (hc=0.5) [9-slice]
├─ Spirit3272 内容底 UITransform 550×301 Widget 16 (hc=0)
├─ Spirit3273 内容底 UITransform 626×142 Widget 16 (hc=-2, active=false)
├─ Spirit3274 关闭 UITransform 100×100 Widget 16 (hc=261)
├─ Spirit3275 按钮 UITransform 173×49 Widget 16 (hc=-110.5)[9-slice]
├─ Spirit3276 按钮 UITransform 116×41 Widget 16 (hc=85)
├─ Spirit3277 底 UITransform 521×49 Widget 16 (hc=-14.5) [9-slice]
├─ Spirit3278 按钮 UITransform 79×41 Widget 16 (hc=194.5)
├─ Spirit3279 文本 UITransform 85×25 Widget 16 (hc=-206.5)[Label]
├─ Spirit3280 文本 UITransform 9×25 Widget 16 (hc=-177.5)[Label]
├─ Spirit3281 按钮 UITransform 79×41 Widget 16 (hc=-69.5)
├─ Spirit3282 按钮 UITransform 193×49 Widget 16 (hc=162.5) [9-slice]
├─ Spirit3283 文本 UITransform 9×25 Widget 16 (hc=89.5) [Label]
├─ Spirit3284 标题 UITransform 135×35 Widget 16 (hc=0.5) [Label]
├─ Spirit3285 标签 UITransform 57×25 Widget 16 (hc=-246.5)[Label]
├─ Spirit3286 标签 UITransform 57×25 Widget 16 (hc=18.5) [Label]
├─ Spirit3287 按钮 UITransform 266×49 Widget 16 (hc=0) [9-slice]
├─ Spirit3288 文本 UITransform 9×25 Widget 16 (hc=-105.5)[Label]
├─ Spirit3289 图标 UITransform 80×60 Widget 16 (hc=190)
├─ Spirit3290 标签 UITransform 76×25 Widget 16 (hc=-237) [Label]
├─ Spirit3291 标签 UITransform 70×21 Widget 16 (hc=74) [Label]
└─ Spirit3292 文本 UITransform 85×25 Widget 16 (hc=8.5) [Label]
```
**group-106 手机验证弹窗(15 节点:15 Sprite)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3241 | 遮罩 | Img=11,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45;**active=false**(IsVisible=0) |
| Spirit3242 | 背景 | Img=2(九宫格),577×406,lpos(0.5,0) | Sprite sf=`8eb7acc3-…` type=SLICED;contentSize 577×406;Widget 16 hc=0.5 |
| Spirit3243 | 输入框 | Img=407(九宫格),424×61,lpos(3,39.5) | Sprite sf=`92947828-…` type=SLICED;contentSize 424×61;Widget 16 hc=3 |
| Spirit3244 | 输入框 | Img=407(九宫格),279×61,lpos(-58.5,-44.5) | Sprite sf=`92947828-…` type=SLICED;contentSize 279×61;Widget 16 hc=-58.5 |
| Spirit3245 | 验证码按钮 | Img=429 帧 2(Frame=2),148×73,lpos(144,-44.5) | Sprite sf=`1d3b6808-…`;contentSize 148×73;Widget 16 hc=144 |
| Spirit3246 | 帧动画 | Img=433 帧 1(FrameText=12 回绕),42×28,lpos(101,-44) | Sprite sf=`62b9af40-…`;contentSize 42×28;Widget 16 hc=101 |
| Spirit3251 | 关闭 | Img=33 帧 1,83×84,lpos(273.5,171) | Sprite sf=`eedce6d7-…`;contentSize 83×84;Widget 16 hc=273.5 |
| Spirit3253 | 确认 | Img=34 帧 1,197×73,lpos(0.5,-131.5) | Sprite sf=`c8cc3782-…`;contentSize 197×73;Widget 16 hc=0.5 |
| Spirit3252 | 主按钮 | Img=434 帧 1,284×84,lpos(0,157) | Sprite sf=`c0541eab-…`;contentSize 284×84;Widget 16 hc=0 |
| Spirit3249 | 标签 | Img=436 帧 1,181×26,lpos(-53.5,40) | Sprite sf=`1441df71-…`;contentSize 181×26;Widget 16 hc=-53.5 |
| Spirit3250 | 标签 | Img=436 帧 2,181×26,lpos(-53.5,-44) | Sprite sf=`b706d5cf-…`;contentSize 181×26;Widget 16 hc=-53.5 |
| Spirit3247 | 帧动画 | Img=433 帧 1(FrameText=1),21×28,lpos(-133.5,40) | Sprite sf=`62b9af40-…`;contentSize 21×28;Widget 16 hc=-133.5 |
| Spirit3248 | 帧动画 | Img=433 帧 1(FrameText=12 回绕),42×28,lpos(-123,-44) | Sprite sf=`62b9af40-…`;contentSize 42×28;Widget 16 hc=-123 |
| Spirit3262 | 图标 | Img=435 帧 1,45×62,lpos(-186.5,40) | Sprite sf=`84faf20a-…`;contentSize 45×62;Widget 16 hc=-186.5 |
| Spirit3263 | 图标 | Img=435 帧 2,45×62,lpos(-186.5,-44) | Sprite sf=`c6f6f99a-…`;contentSize 45×62;Widget 16 hc=-186.5 |
**group-108 白名单管理/搜索玩家(23 节点:13 Sprite + 10 Label)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3270 | 遮罩 | Img=11 帧 1,1280×720,lpos(0,0) | Sprite sf=`eabf148a-…`;contentSize **1600×720**;Widget 45 |
| Spirit3271 | 背景 | Img=411(九宫格),591×621,lpos(0.5,1.5) | Sprite sf=`51c575a7-…` type=SLICED;contentSize 591×621;Widget 16 hc=0.5 |
| Spirit3272 | 内容底 | Img=10 帧 1,550×301,lpos(0,-80.5) | Sprite sf=`dcc4530b-…`;contentSize 550×301;Widget 16 hc=0 |
| Spirit3273 | 内容底 | Img=10 帧 1,626×142,lpos(-2,-287) | Sprite sf=`dcc4530b-…`;contentSize 626×142;Widget 16 hc=-2;**active=false**(IsVisible=0) |
| Spirit3274 | 关闭 | Img=415 帧 1,100×100,lpos(261,285) | Sprite sf=`fe285a2f-…`;contentSize 100×100;Widget 16 hc=261 |
| Spirit3275 | 按钮 | Img=412(九宫格),173×49,lpos(-110.5,159.5) | Sprite sf=`0ca224e1-…` type=SLICED;contentSize 173×49;Widget 16 hc=-110.5 |
| Spirit3276 | 按钮 | Img=375 帧 2,116×41,lpos(85,104.5) | Sprite sf=`66044cac-…`;contentSize 116×41;Widget 16 hc=85 |
| Spirit3277 | 底 | Img=419(九宫格),521×49,lpos(-14.5,-470.5) | Sprite sf=`050eaa6d-…` type=SLICED;contentSize 521×49;Widget 16 hc=-14.5 |
| Spirit3278 | 按钮 | Img=413 帧 1,79×41,lpos(194.5,-470.5) | Sprite sf=`940bbbba-…`;contentSize 79×41;Widget 16 hc=194.5 |
| Spirit3279 | 文本 | 85×25,lpos(-206.5,-470.5) | Label fontSize=14 color=黑;Text="Spirit3209"(占位) |
| Spirit3280 | 文本 | 9×25,lpos(-177.5,159.5) | Label fontSize=14 color=黑;Text="s"(占位) |
| Spirit3281 | 按钮 | Img=413 帧 1,79×41,lpos(-69.5,104.5) | Sprite sf=`940bbbba-…`;contentSize 79×41;Widget 16 hc=-69.5 |
| Spirit3282 | 按钮 | Img=412(九宫格),193×49,lpos(162.5,159.5) | Sprite sf=`0ca224e1-…` type=SLICED;contentSize 193×49;Widget 16 hc=162.5 |
| Spirit3283 | 文本 | 9×25,lpos(89.5,159.5) | Label fontSize=14 color=黑;Text="s"(占位) |
| Spirit3284 | 标题 | 135×35,lpos(0.5,278.5) | Label fontSize=20 color=白;Text="白名单管理"(静态标题) |
| Spirit3285 | 标签 | 57×25,lpos(-246.5,159.5) | Label fontSize=14 color=黑;Text="玩家ID"(静态标签) |
| Spirit3286 | 标签 | 57×25,lpos(18.5,159.5) | Label fontSize=14 color=黑;Text="魅力值"(静态标签) |
| Spirit3287 | 按钮 | Img=412(九宫格),266×49,lpos(0,220.5) | Sprite sf=`0ca224e1-…` type=SLICED;contentSize 266×49;Widget 16 hc=0 |
| Spirit3288 | 文本 | 9×25,lpos(-105.5,220.5) | Label fontSize=14 color=黑;Text="s"(占位) |
| Spirit3289 | 图标 | Img=188 帧 1,80×60,lpos(190,219) | Sprite sf=`191af9ac-…`;contentSize 80×60;Widget 16 hc=190 |
| Spirit3290 | 标签 | 76×25,lpos(-237,221.5) | Label fontSize=14 color=黑;Text="搜索玩家"(静态标签) |
| Spirit3291 | 标签 | 70×21,lpos(74,104.5) | Label fontSize=12 color=黑;Text="添加/修改"(静态标签) |
| Spirit3292 | 文本 | 85×25,lpos(8.5,-470.5) | Label fontSize=14 color=黑;Text="Spirit3209"(占位) |
**脚本驱动要点**:
- **双弹窗独立显隐**:group-106(手机验证)与 group-108(白名单管理/搜索玩家)是互斥的功能弹窗,脚本按业务显隐/切换(如「手机验证」→ 显 group-106,「白名单管理」→ 显 group-108)。
- **遮罩**:Spirit3241(group-106,IsVisible=0 → **active=false** 初始隐藏,进入手机验证流程时再显)、Spirit3270(group-108,可见)。均为 Img=11 通用遮罩,Widget 45 全屏拉伸,点击关闭对应弹窗。
- **九宫格边框**:Spirit3242 Img=2(**第 5 组边框 90/90/90/90**,新增于 Layer29)、Spirit3243/3244 Img=407(输入框边框 **150/25/150/25**,⚠️ 同图 Layer17 是 20/20/20/20,spriteFrame border 只能一套,延后)、Spirit3271 Img=411(90/90/90/90)、Spirit3275/3282/3287 Img=412(95/20/95/20)、Spirit3277 Img=419(55/20/55/20)。⚠️ 五处九宫格边框均延后(改 spriteFrame .meta 需先征同意)。
- **帧动画**:Spirit3246/3247/3248 `SpiritType=4`,Img=433(00433_*.png 11 帧 21×28 数字),`FrameText` 循环回绕帧 1——Spirit3246 FrameText=12 → `(12-1)%11+1=1`、Spirit3247 FrameText=1 → 帧 1、Spirit3248 FrameText=12 → 帧 1。运行时脚本按手机验证倒计时逐帧切换 spriteFrame(数字帧动画,见 1.10)。
- **帧号取模**:img=429 `Frame=2`、img=436 `Frame=1/2`、img=435 `Frame=1/2`、img=375 `Frame=2`(Spirit3276 渲染 116×41,图片帧 236×100 缩放)、img=34/33/188/413 `Frame=1`,`frame_all≥2` 均直接按 Frame 取帧(不越界,无需回绕)。
- **动态文本**:5 个占位 Label——Spirit3279/3292("Spirit3209" 占位)、Spirit3280/3283/3288("s" 占位),运行时替换为玩家 ID/数值等。静态标签 5 个(白名单管理/玩家ID/魅力值/搜索玩家/添加/修改)不替换。见 4.1。
- **可点击**:全部 `CanClick=1`、XML EventList 空——Spirit3251 关闭(手机验证关闭)、Spirit3253 确认、Spirit3252 主按钮、Spirit3245 验证码按钮、Spirit3274 关闭(白名单关闭)、Spirit3275/3282/3287 白名单按钮、Spirit3278/3281 操作按钮、Spirit3289 图标(搜索/删除)、Spirit3241/3270 遮罩(点击关闭),按需绑定(见 4.2)。
### 3.36 Layer6.prefab(Layer6,对局主界面)
源 Layer00006.xml:53 spirits,GroupID=103/3。**对局主界面**(牌桌主界面 + 玩家信息头部),56 节点(1 root + 2 group + 53 children),42 Sprite + 11 Label。含 FrameText 数字(img203/19)与九宫格底牌栏(img18×2)。
```
Layer6 UITransform 1600×720 Widget 45
├─ group-103 UITransform 1600×720 Widget 45(牌桌主界面 36 节点)
│ ├─ Spirit6 房间列表背景 UITransform 1600×720 Widget 45(全屏拉伸,active=false)
│ ├─ Spirit3170 UITransform 441×395 Widget 16 (hc=-302.5)
│ ├─ Spirit3173 UITransform 659×493 Widget 16 (hc=272.5, active=false)
│ ├─ Spirit3172 UITransform 60×460 Widget 16 (hc=-12)
│ ├─ Spirit3174 UITransform 132×40 Widget 16 (hc=11)
│ ├─ Spirit3176 UITransform 637×203 Widget 16 (hc=46.5)
│ ├─ Spirit3192 UITransform 102×103 Widget 16 (hc=296)
│ ├─ Spirit3181 UITransform 44×44 Widget 16 (hc=448)
│ ├─ Spirit3183 UITransform 309×322 Widget 16 (hc=-352.5, active=false)
│ ├─ Spirit3184 UITransform 218×80 Widget 16 (hc=-415)
│ ├─ Spirit3185 UITransform 60×460 Widget 16 (hc=33)
│ ├─ Spirit3186 UITransform 250×131 Widget 16 (hc=557)
│ ├─ Spirit3187 UITransform 138×35 Widget 16 (hc=557)(FrameText)
│ ├─ Spirit3190 UITransform 683×177 Widget 16 (hc=284.5, active=false)
│ ├─ Spirit3191 UITransform 683×69 Widget 16 (hc=281.5, active=false)
│ ├─ Spirit3175 UITransform 159×60 Widget 16 (hc=514.5)
│ ├─ Spirit3194 UITransform 141×50 Widget 16 (hc=-536.5)
│ ├─ Spirit3195 UITransform 141×50 Widget 16 (hc=-536.5)
│ ├─ Spirit3196 UITransform 257×57 Widget 16 (hc=-399.5)
│ ├─ Spirit3197 UITransform 23×35 Widget 16 (hc=-457.5)(FrameText)
│ ├─ Spirit3215 UITransform 141×50 Widget 16 (hc=-190.5)
│ ├─ Spirit3214 UITransform 141×50 Widget 16 (hc=-481.5)
│ ├─ Spirit3199 UITransform 159×60 Widget 16 (hc=336.5)
│ ├─ Spirit3182 UITransform 59×51 Widget 16 (hc=-589.5)
│ ├─ Spirit3231 UITransform 112×93 Widget 16 (hc=308)
│ ├─ Spirit3235 UITransform 141×50 Widget 16 (hc=-317.5)
│ ├─ Spirit3240 UITransform 218×80 Widget 16 (hc=-415)
│ ├─ Spirit3171 UITransform 19×25 Widget 16 (hc=-235.5)[Label]
│ ├─ Spirit3177 UITransform 5×25 Widget 16 (hc=-240.5)[Label]
│ ├─ Spirit3178 UITransform 5×25 Widget 16 (hc=-238.5)[Label]
│ ├─ Spirit3179 UITransform 5×25 Widget 16 (hc=-118.5)[Label]
│ ├─ Spirit3180 UITransform 5×25 Widget 16 (hc=-6.5) [Label]
│ ├─ Spirit3188 UITransform 5×25 Widget 16 (hc=487.5)[Label]
│ ├─ Spirit3189 UITransform 5×25 Widget 16 (hc=-243.5)[Label]
│ ├─ Spirit3198 UITransform 19×25 Widget 16 (hc=-556.5)[Label]
│ └─ Spirit3259 UITransform 85×25 Widget 16 (hc=124.5)[Label]
└─ group-3 UITransform 1600×720 Widget 45(玩家信息头部 17 节点)
├─ Spirit3233 UITransform 102×78 Widget 16 (hc=560)
├─ Spirit3232 UITransform 111×93 Widget 16 (hc=560.5)
├─ Spirit3264 UITransform 133×98 Widget 16 (hc=560.5)
├─ Spirit3256 UITransform 156×64 Widget 16 (hc=-547)
├─ Spirit9 头像框 UITransform 70×72 Widget 16 (hc=-501)
├─ Spirit8 头像 UITransform 63×65 Widget 16 (hc=-501.5)
├─ Spirit478 UITransform 280×80 Widget 16 (hc=490)
├─ Spirit287 UITransform 155×35 Widget 16 (hc=-88.5) [9-slice]
├─ Spirit286 UITransform 77×46 Widget 16 (hc=-174.5)
├─ Spirit10 购买房卡 UITransform 26×25 Widget 16 (hc=-157)
├─ Spirit496 UITransform 155×35 Widget 16 (hc=141.5) [9-slice]
├─ Spirit3161 UITransform 17×28 Widget 16 (hc=-134.5)(FrameText)
├─ Spirit508 UITransform 44×40 Widget 16 (hc=66)
├─ Spirit3162 UITransform 119×28 Widget 16 (hc=150.5)(FrameText)
├─ Spirit509 UITransform 26×25 Widget 16 (hc=78)
├─ Spirit289 ID UITransform 19×25 Widget 16 (hc=-430.5)[Label]
└─ Spirit288 昵称 UITransform 38×25 Widget 16 (hc=-423)[Label]
```
**group-103 牌桌主界面 Sprite(27 个)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit6 | 房间列表背景 | Img=13 帧2→1,1280×720,lpos(0,0) | Sprite sf=`185f4ed3-…`;contentSize **1600×720**;Widget 45;**active=false**(IsVisible=0) |
| Spirit3170 | Spirit3170 | Img=7 帧1,441×395,lpos(-302.5,-11.5) | Sprite sf=`8f185a74-…`;contentSize 441×395;Widget 16 hc=-302.5 |
| Spirit3173 | Spirit3173 | Img=36 帧1,659×493,lpos(272.5,-51.5) | Sprite sf=`f213b9c2-…`;contentSize 659×493;Widget 16 hc=272.5;**active=false** |
| Spirit3172 | Spirit3172 | Img=10 帧1,60×460,lpos(-12,-50) | Sprite sf=`dcc4530b-…`;contentSize 60×460;Widget 16 hc=-12 |
| Spirit3174 | Spirit3174 | Img=26 帧1,132×40,lpos(11,220) | Sprite sf=`12dd0f9c-…`;contentSize 132×40;Widget 16 hc=11 |
| Spirit3176 | Spirit3176 | Img=77 帧1,637×203,lpos(46.5,-524) | Sprite sf=`b008b157-…`;contentSize 637×203;Widget 16 hc=46.5 |
| Spirit3192 | Spirit3192 | Img=92 帧1,102×103,lpos(296,-520.5) | Sprite sf=`f2a266cb-…`;contentSize 102×103;Widget 16 hc=296 |
| Spirit3181 | Spirit3181 | Img=78 帧1,44×44,lpos(448,-443) | Sprite sf=`362534c2-…`;contentSize 44×44;Widget 16 hc=448 |
| Spirit3183 | Spirit3183 | Img=176 帧1,309×322,lpos(-352.5,-7) | Sprite sf=`2b8d7065-…`;contentSize 309×322;Widget 16 hc=-352.5;**active=false** |
| Spirit3184 | Spirit3184 | Img=207 帧1,218×80,lpos(-415,-161) | Sprite sf=`3213a1f8-…`;contentSize 218×80;Widget 16 hc=-415 |
| Spirit3185 | Spirit3185 | Img=10 帧1,60×460,lpos(33,-50) | Sprite sf=`dcc4530b-…`;contentSize 60×460;Widget 16 hc=33 |
| Spirit3186 | Spirit3186 | Img=79 帧1,250×131,lpos(557,-566.5) | Sprite sf=`cc2a414b-…`;contentSize 250×131;Widget 16 hc=557 |
| Spirit3187 | Spirit3187 | Img=203 帧1(FrameText=123456),138×35,lpos(557,-514.5) | Sprite sf=`a209c78b-…`;contentSize 138×35;Widget 16 hc=557 |
| Spirit3190 | Spirit3190 | Img=10 帧1,683×177,lpos(284.5,271.5) | Sprite sf=`dcc4530b-…`;contentSize 683×177;Widget 16 hc=284.5;**active=false** |
| Spirit3191 | Spirit3191 | Img=10 帧1,683×69,lpos(281.5,-325.5) | Sprite sf=`dcc4530b-…`;contentSize 683×69;Widget 16 hc=281.5;**active=false** |
| Spirit3175 | Spirit3175 | Img=45 帧1,159×60,lpos(514.5,230) | Sprite sf=`db98f2d6-…`;contentSize 159×60;Widget 16 hc=514.5 |
| Spirit3194 | Spirit3194 | Img=333 帧1,141×50,lpos(-536.5,-475) | Sprite sf=`93f88a85-…`;contentSize 141×50;Widget 16 hc=-536.5 |
| Spirit3195 | Spirit3195 | Img=333 帧2,141×50,lpos(-536.5,-537) | Sprite sf=`72af5aa1-…`;contentSize 141×50;Widget 16 hc=-536.5 |
| Spirit3196 | Spirit3196 | Img=387 帧1,257×57,lpos(-399.5,199.5) | Sprite sf=`a33762cf-…`;contentSize 257×57;Widget 16 hc=-399.5 |
| Spirit3197 | Spirit3197 | Img=203 帧1(FrameText=1),23×35,lpos(-457.5,199.5) | Sprite sf=`a209c78b-…`;contentSize 23×35;Widget 16 hc=-457.5 |
| Spirit3215 | Spirit3215 | Img=421 帧2,141×50,lpos(-190.5,200) | Sprite sf=`22c562c5-…`;contentSize 141×50;Widget 16 hc=-190.5 |
| Spirit3214 | Spirit3214 | Img=421 帧1,141×50,lpos(-481.5,-231) | Sprite sf=`733acef5-…`;contentSize 141×50;Widget 16 hc=-481.5 |
| Spirit3199 | Spirit3199 | Img=45 帧2,159×60,lpos(336.5,230) | Sprite sf=`bfc9f9b0-…`;contentSize 159×60;Widget 16 hc=336.5 |
| Spirit3182 | Spirit3182 | Img=259 帧1,59×51,lpos(-589.5,315.5) | Sprite sf=`3ce98bad-…`;contentSize 59×51;Widget 16 hc=-589.5 |
| Spirit3231 | Spirit3231 | Img=422 帧1,112×93,lpos(308,313.5) | Sprite sf=`d375e75a-…`;contentSize 112×93;Widget 16 hc=308 |
| Spirit3235 | Spirit3235 | Img=421 帧3,141×50,lpos(-317.5,-231) | Sprite sf=`c47d4ba6-…`;contentSize 141×50;Widget 16 hc=-317.5 |
| Spirit3240 | Spirit3240 | Img=207 帧2,218×80,lpos(-415,-78) | Sprite sf=`604ed57e-…`;contentSize 218×80;Widget 16 hc=-415 |
**group-103 Label(9 个)**:
| 节点 | 名称 | 源字段(Text/字号/颜色,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3171 | Spirit3171 | "ID" 14 白,19×25,lpos(-235.5,-188.5) | Label string=`ID` fontSize=14 color=白 |
| Spirit3177 | Spirit3177 | "." 14 白,5×25,lpos(-240.5,-453.5) | Label string=`.` fontSize=14 color=白 |
| Spirit3178 | Spirit3178 | "." 14 深棕,5×25,lpos(-238.5,-515.5) | Label string=`.` fontSize=14 color=深棕(60,40,10) |
| Spirit3179 | Spirit3179 | "." 14 深棕,5×25,lpos(-118.5,-513.5) | Label string=`.` fontSize=14 color=深棕(60,40,10) |
| Spirit3180 | Spirit3180 | "." 14 深棕,5×25,lpos(-6.5,-519.5) | Label string=`.` fontSize=14 color=深棕(60,40,10) |
| Spirit3188 | Spirit3188 | "." 14 白,5×25,lpos(487.5,-566.5) | Label string=`.` fontSize=14 color=白 |
| Spirit3189 | Spirit3189 | "." 14 深棕,5×25,lpos(-243.5,-481.5) | Label string=`.` fontSize=14 color=深棕(60,40,10) |
| Spirit3198 | Spirit3198 | "ID" 14 白,19×25,lpos(-556.5,-314.5) | Label string=`ID` fontSize=14 color=白 |
| Spirit3259 | Spirit3259 | "Spirit3259" 14 白,85×25,lpos(124.5,247.5) | Label string=`Spirit3259` fontSize=14 color=白 |
**group-3 玩家信息头部 Sprite(15 个)**:
| 节点 | 名称 | 源字段(Img/Frame,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit3233 | Spirit3233 | Img=424 帧11→1,102×78,lpos(560,-86) | Sprite sf=`6148cbb3-…`;contentSize 102×78;Widget 16 hc=560 |
| Spirit3232 | Spirit3232 | Img=422 帧11→1,111×93,lpos(560.5,-180.5) | Sprite sf=`d375e75a-…`;contentSize 111×93;Widget 16 hc=560.5 |
| Spirit3264 | Spirit3264 | Img=437 帧11→1,133×98,lpos(560.5,10) | Sprite sf=`59903a63-…`;contentSize 133×98;Widget 16 hc=560.5 |
| Spirit3256 | Spirit3256 | Img=431 帧1,156×64,lpos(-547,234) | Sprite sf=`afea66bf-…`;contentSize 156×64;Widget 16 hc=-547 |
| Spirit9 | 头像框 | Img=24 帧1,70×72,lpos(-501,322) | Sprite sf=`7863c037-…`;contentSize 70×72;Widget 16 hc=-501 |
| Spirit8 | 头像 | Img=25 帧1,63×65,lpos(-501.5,322.5) | Sprite sf=`60da43f5-…`;contentSize 63×65;Widget 16 hc=-501.5 |
| Spirit478 | Spirit478 | Img=44 帧1,280×80,lpos(490,319) | Sprite sf=`d1e52465-…`;contentSize 280×80;Widget 16 hc=490 |
| Spirit287 | Spirit287 | Img=18(九宫格),155×35,lpos(-88.5,319.5) | Sprite sf=`e0ab2dec-…` type=SLICED;contentSize 155×35;Widget 16 hc=-88.5;border 待补 |
| Spirit286 | Spirit286 | Img=16 帧1,77×46,lpos(-174.5,320) | Sprite sf=`bf4f2fec-…`;contentSize 77×46;Widget 16 hc=-174.5 |
| Spirit10 | 购买房卡 | Img=17 帧1,26×25,lpos(-157,306.5) | Sprite sf=`13baa8d4-…`;contentSize 26×25;Widget 16 hc=-157 |
| Spirit496 | Spirit496 | Img=18(九宫格),155×35,lpos(141.5,319.5) | Sprite sf=`e0ab2dec-…` type=SLICED;contentSize 155×35;Widget 16 hc=141.5;border 待补 |
| Spirit3161 | Spirit3161 | Img=19 帧1(FrameText=1),17×28,lpos(-134.5,319) | Sprite sf=`fc6e9a8e-…`;contentSize 17×28;Widget 16 hc=-134.5 |
| Spirit508 | Spirit508 | Img=204 帧1,44×40,lpos(66,325) | Sprite sf=`6b9ad554-…`;contentSize 44×40;Widget 16 hc=66 |
| Spirit3162 | Spirit3162 | Img=19 帧1(FrameText=1000000),119×28,lpos(150.5,319) | Sprite sf=`fc6e9a8e-…`;contentSize 119×28;Widget 16 hc=150.5 |
| Spirit509 | Spirit509 | Img=17 帧1,26×25,lpos(78,309.5) | Sprite sf=`13baa8d4-…`;contentSize 26×25;Widget 16 hc=78 |
**group-3 Label(2 个)**:
| 节点 | 名称 | 源字段(Text/字号/颜色,W×H,lpos) | 组件属性 |
|---|---|---|---|
| Spirit289 | ID | "ID" 14 白,19×25,lpos(-430.5,305.5) | Label string=`ID` fontSize=14 color=白 |
| Spirit288 | 昵称 | "昵称" 14 橙金,38×25,lpos(-423,337.5) | Label string=`昵称` fontSize=14 color=橙金(255,203,92) |
**脚本驱动要点**:
- **双 group 结构**:group-103(牌桌主界面)与 group-3(玩家信息头部)是同一场景的两个区域,脚本按业务分别显隐/驱动。
- **帧号循环取模**(见 1.10):`frame_all=1` 的图源 Frame 越界回绕——Spirit3233/3232/3264(img424/422/437,源 Frame=11 → 帧 1)、Spirit6(img13,源 Frame=2 → 帧 1)。`frame_all≥2` 直接取帧——img431 Frame=1、img207 Frame=1/2、img421 Frame=1/2/3、img333 Frame=1/2、img45 Frame=1/2、img16 Frame=1、img204 Frame=1(均不越界)。
- **FrameText 数字显示**(`SpiritType=4`,见 1.10 与 Layer50 Spirit3141 约定):`FrameText` 是「数字字符串显示值」而非帧号——contentSize = 源 W×H(`字符数 × 单帧宽`),spriteFrame = 帧 1 占位,运行时脚本按数字逐位切帧。本层 4 处:Spirit3187(img203,FrameText=123456,W=138=6×23)、Spirit3197(img203,FrameText=1,W=23)、Spirit3161(img19,FrameText=1,W=17)、Spirit3162(img19,FrameText=1000000,W=119=7×17)。img203 单帧 23×35、img19 单帧 17×28,均 13 帧(数字 0-9 + 符号)。
- **九宫格**:Spirit287/496 均为 Img=18(00018.png 155×35)底牌栏,边框 70/1/70/1(LeftEdge/RightEdge=70、TopEdge/BottomEdge=1)。Sprite `_type=SLICED` 已设,spriteFrame border 待补(改 `.meta` 需先征得同意)。img18 被本层 2 处共享,同一边框,无需副本。
- **动态文本**:group-103 的 9 个 Label 中,Spirit3171/3198("ID" 白)、Spirit3259("Spirit3259" 白)为占位/标签,Spirit3177~3180/3188/3189("." 白/深棕分隔符)为牌桌数字/金额的小数点分隔(运行时随金额位数移动);group-3 的 Spirit288 昵称(橙金)运行时替换为玩家昵称、Spirit289 ID(白)替换为玩家 ID。见 4.1。
- **可点击**:全部 `CanClick=1`。自引用 MouseUp 有 Spirit9 头像框(MouseUp=9)、Spirit478(MouseUp=478)、Spirit286(MouseUp=286)、Spirit3194(MouseUp=3194)→ 脚本按需绑定;其余 XML EventList 空(见 4.2)。
- **隐藏节点**:Spirit6 房间列表背景、Spirit3173、Spirit3183、Spirit3190、Spirit3191 均 `IsVisible=0` → **active=false**,运行时按业务显隐。
---
### 3.37 Layer14_Pay.prefab(Pay_Layer,支付金额选择)
源 Layer00014.xml:43 spirits,双 group。
**层级树**:
```
Layer14_Pay (1600×720, Widget 45)
├─ group-53 (1600×720, Widget 45) 金额选择面板
│ ├─ Spirit46 支付选择金额遮罩 (1600×720, img11 全屏遮罩, Widget 45)
│ ├─ Spirit359 九宫格背景 (980×620, img41 SLICED, 边框 55/45/55/45)
│ ├─ Spirit360 标题 (559×138, img189 帧1)
│ ├─ Spirit386 关闭 (83×84, img33)
│ ├─ Spirit416~425 金额按钮×10 (208×210, img190 帧1)
│ ├─ Spirit426~435 金额文本×10 (109×35, Label fs=20 黑)
│ └─ Spirit446~455 金额数字 FrameText×10 (52×32, img191 帧1)
└─ group-54 (1600×720, Widget 45) 确认支付弹窗
├─ Spirit456 遮罩 (1600×720, img11, Widget 45)
├─ Spirit457 九宫格背景 (800×520, img197 SLICED, 边框 70/70/70/70)
├─ Spirit458 标题 (320×31, img196 帧1)
├─ Spirit459 标题小字 (119×26, img195)
├─ Spirit460 金额数字 FrameText (120×70, img192 帧1)
├─ Spirit461 按钮 (228×80, img193 帧1)
├─ Spirit462 按钮 (228×80, img193 帧3)
├─ Spirit463 按钮 (228×80, img193 帧1, Y=782 屏幕外)
└─ Spirit464 大按钮 (484×89, img194)
```
**group-53 金额选择面板(34 spirits)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit46 | 支付选择金额遮罩 | 1280×720 (0,0) | Sprite sf=img11 type=0 sizeMode=0;contentSize **1600×720**(全屏拉伸);lpos(0,0);Widget 45 |
| Spirit359 | 九宫格背景 | 980×620 (150,71) 边框 55/45/55/45 | Sprite sf=img41 type=SLICED sizeMode=0;contentSize 980×620;lpos(0,-21);Widget 16 hc=0 |
| Spirit360 | 标题 | 559×138 (361,8) | Sprite sf=img189 帧1 type=0;contentSize 559×138;lpos(0.5,283);Widget 16 hc=0.5 |
| Spirit386 | 关闭 | 83×84 (1062,43) | Sprite sf=img33;contentSize 83×84;lpos(463.5,275);Widget 16 hc=463.5 |
| Spirit416~425 | 金额按钮×10 | 208×210 | Sprite sf=img190 帧1;contentSize 208×210;lpos 见下;Widget 16 hc=lpos.x |
| Spirit426~435 | 金额文本×10 | 109×35 | Label string=`Spirit426` fontSize=20 color=黑;contentSize 109×35;lpos 见下;Widget 16 |
| Spirit446~455 | 金额数字 FrameText×10 | 52×32 FrameText="12" | Sprite sf=img191 帧1;contentSize 52×32;lpos 见下;Widget 16 |
金额按钮/文本/数字 lpos(按 5×2 网格,第 9/10 个落屏幕外):
| 序号 | 按钮(416~425) | 文本(426~435) | 数字(446~455) |
|---|---|---|---|
| 1 | (-335,104) | (-340.5,83.5) | (-353,37) |
| 2 | (-117,104) | (-108.5,83.5) | (-125,37) |
| 3 | (101,104) | (97.5,83.5) | (91,37) |
| 4 | (319,104) | (299.5,83.5) | (296,37) |
| 5 | (-335,-159) | (-331.5,-180.5) | (-333,-226) |
| 6 | (-117,-159) | (-117.5,-180.5) | (-111,-226) |
| 7 | (101,-159) | (106.5,-180.5) | (108,-226) |
| 8 | (319,-159) | (305.5,-180.5) | (332,-226) |
| 9 | (343,-646) | (327.5,-662.5) | (321,-710) |
| 10 | (582,-622) | (575.5,-645.5) | (569,-694) |
**group-54 确认支付弹窗(9 spirits)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit456 | 遮罩 | 1280×720 (0,0) | Sprite sf=img11;contentSize **1600×720**(全屏拉伸);lpos(0,0);Widget 45 |
| Spirit457 | 九宫格背景 | 800×520 (240,74) 边框 70/70/70/70 | Sprite sf=img197 type=SLICED;contentSize 800×520;lpos(0,26);Widget 16 hc=0 |
| Spirit458 | 标题 | 320×31 (480,89) | Sprite sf=img196 帧1;contentSize 320×31;lpos(0,255.5);Widget 16 hc=0 |
| Spirit459 | 标题小字 | 119×26 (290,278) | Sprite sf=img195;contentSize 119×26;lpos(-290.5,69);Widget 16 hc=-290.5 |
| Spirit460 | 金额数字 FrameText | 120×70 (418,162) FrameText="12" | Sprite sf=img192 帧1;contentSize 120×70;lpos(-162,163);Widget 16 hc=-162 |
| Spirit461 | 按钮 | 228×80 (457,262) | Sprite sf=img193 帧1;contentSize 228×80;lpos(-69,58);Widget 16 hc=-69 |
| Spirit462 | 按钮 | 228×80 (741,262) Frame=3 | Sprite sf=img193 帧3;contentSize 228×80;lpos(215,58);Widget 16 hc=215 |
| Spirit463 | 按钮 | 228×80 (58,782) | Sprite sf=img193 帧1;contentSize 228×80;lpos(-468,-462);Widget 16 hc=-468 |
| Spirit464 | 大按钮 | 484×89 (398,484) | Sprite sf=img194;contentSize 484×89;lpos(0,-168.5);Widget 16 hc=0 |
**脚本驱动要点**:
- **双 group 结构**:group-53(金额选择面板)与 group-54(确认支付弹窗)是支付流程的两个弹窗态,脚本按业务显隐切换(先选金额 → 弹出确认支付)。
- **FrameText 数字显示**(`SpiritType=4`,见 1.10):Spirit446~455(img191 单帧 26×32,FrameText="12")与 Spirit460(img192 单帧 60×70,FrameText="12")是金额数字显示——contentSize = 源 W×H(`字符数 × 单帧宽`:2×26=52、2×60=120),spriteFrame = 帧 1 占位,运行时脚本按数字逐位切帧。
- **金额按钮与文本联动**:Spirit416~425(img190 帧1)是 10 个金额选择按钮,Spirit426~435 是对应金额文本(Label,初始 `Spirit426` 占位),运行时脚本替换为实际金额值并绑定选择回调。
- **九宫格**:Spirit359(img41 边框 55/45/55/45,共享图,同 Layer16/18 边框)与 Spirit457(img197 边框 70/70/70/70,新图)Sprite `_type=SLICED` 已设,spriteFrame border 待补(改 `.meta` 需先征得同意,见 1.9)。
- **可点击**:全部 `CanClick=1`。Spirit457 MouseUp=457(自引用)→ 语义为「确认支付/关闭」,脚本绑定;其余 XML EventList 空(见 4.2)。
- **屏幕外元素**:Spirit424/425(按钮)、Spirit434/435(文本)、Spirit454/455(数字)的源 Y=901/877/1005/988/1054/1038,Spirit463(按钮)源 Y=782,lpos.y 均为负(屏幕下方),是源数据布局特征(备用/隐藏按钮,运行时按需显隐)。
---
### 3.38 Layer25_wareHouse.prefab(wareHouseLayer,仓库)
源 Layer00025.xml:68 spirits(64 sprite + 4 label),四 group。Name="wareHouseLayer"。
**层级树**:
```
Layer25_wareHouse (1600×720, Widget 45)
├─ group-91 (1600×720, Widget 45) 主框架 + 左侧 tab + 物品格子 + 关闭
│ ├─ Spirit3029 遮罩 (1600×720, img11 全屏遮罩, Widget 45)
│ ├─ Spirit3030 九宫格背景 (1235×664, img374 SLICED, 边框 400/200/346/245)
│ ├─ Spirit3031 标题 (403×76, img327 帧1)
│ ├─ Spirit3059/3060 左侧 tab (236×100, img332 帧1/2)
│ ├─ Spirit3061/3062 tab 图标 (97×37, img335 帧1/3)
│ ├─ Spirit3043 确认键 (292×102, img34 帧1)
│ ├─ Spirit3044/3045~3055 物品格子×12 (131×77, img328 帧11/1~10/12)
│ └─ Spirit97 关闭 (83×84, img33)
├─ group-92 (1600×720, Widget 45) 数字/输入框/按钮
├─ group-93 (1600×720, Widget 45) 输入区
└─ group-94 (1600×720, Widget 45) 输入区
```
**group-91 主框架(21 sprite)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit3029 | 遮罩 | 1280×720 (0,0) | Sprite sf=img11 type=0 sizeMode=0;contentSize **1600×720**(全屏拉伸);lpos(0,0);Widget 45 |
| Spirit3030 | 九宫格背景 | 1235×664 (23,28) 边框 400/200/346/245 | Sprite sf=img374 type=SLICED;contentSize 1235×664;lpos(0.5,0);Widget 16 hc=0.5 |
| Spirit3031 | 标题 | 403×76 (439,37) | Sprite sf=img327 帧1;contentSize 403×76;lpos(0.5,285);Widget 16 hc=0.5 |
| Spirit3059/3060 | 左侧 tab | 236×100 (46,120)/(46,212) | Sprite sf=img332 帧1/2;contentSize 236×100;lpos(-476,190)/(-476,98);Widget 16 |
| Spirit3061/3062 | tab 图标 | 97×37 (116,147)/(116,244) | Sprite sf=img335 帧1/3;contentSize 97×37;lpos(-475.5,194.5)/(-475.5,97.5);Widget 16 |
| Spirit3043 | 确认键 | 292×102 (494,562) | Sprite sf=img34 帧1;contentSize 292×102;lpos(0,-253);Widget 16 hc=0 |
| Spirit3044/3045~3055 | 物品格子×12 | 131×77 | Sprite sf=img328 帧11/1~10/12;contentSize 131×77;lpos 见下;Widget 16 |
| Spirit97 | 关闭 | 83×84 (1172,13) | Sprite sf=img33;contentSize 83×84;lpos(573.5,305);Widget 16 hc=573.5 |
物品格子 12 个(3 列 × 4 行,img328 帧号与网格):
| 行 | ly | 左(lx=233.5) | 中(lx=364.5) | 右(lx=495.5) |
|---|---|---|---|---|
| 1 | 69.5 | Spirit3045 帧1 | Spirit3046 帧2 | Spirit3047 帧3 |
| 2 | -7.5 | Spirit3048 帧4 | Spirit3049 帧5 | Spirit3050 帧6 |
| 3 | -84.5 | Spirit3051 帧7 | Spirit3052 帧8 | Spirit3053 帧9 |
| 4 | -161.5 | Spirit3054 帧10 | Spirit3044 帧11 | Spirit3055 帧12 |
**group-92 数字/输入框/按钮(14 sprite + 1 label)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit3032 | 图标 | 44×40 (399,175) | Sprite sf=img204 帧1;lpos(-219,165) |
| Spirit3033 | 数字 FrameText="10000" | 135×34 (474,183) | Sprite sf=img329 帧1(占位);contentSize 135×34(5 字符×27);lpos(-98.5,160) |
| Spirit3034/3035 | 图标 | 49×49 (384,267)/(588,267) | Sprite sf=img324 帧1;lpos(-231.5,68.5)/(-27.5,68.5) |
| Spirit3036/3037 | 小按钮 | 63×31 (456,276)/(656,276) | Sprite sf=img326 帧1/2;lpos(-152.5,68.5)/(47.5,68.5) |
| Spirit3038/3039 | 输入框 | 348×61 (379,346)/(382,453) | Sprite sf=img323 帧1;lpos(-87,-16.5)/(-84,-123.5) |
| Spirit3040/3041 | 输入条 | 233×25 (437,364)/(440,471) | Sprite sf=img325 帧1/2;lpos(-86.5,-16.5)/(-83.5,-123.5) |
| Spirit3056/3058 | 数字 FrameText="10000" | 135×34 (397,359)/(397,466) | Sprite sf=img329 帧1(占位);contentSize 135×34;lpos(-175.5,-16)/(-175.5,-123) |
| Spirit3063/3064 | 小按钮 | 51×25 (302,364)/(306,471) | Sprite sf=img322 帧2/3;lpos(-312.5,-16.5)/(-308.5,-123.5) |
| Spirit3042 | 文本 | 124×35 (167,765) | Label "Spirit3042" fs=20 黑;contentSize 124×35;lpos(-411,-422.5);Y=765 屏幕外 |
**group-93 输入区(9 sprite + 1 label)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit3065/3066 | 小按钮 | 51×25 (306,302)/(306,412) | Sprite sf=img322 帧3;lpos(-308.5,45.5)/(-308.5,-64.5);Spirit3065 MouseUp=3065 自引用 |
| Spirit3067/3068 | 输入框 | 348×61 (386,284)/(386,394) | Sprite sf=img323 帧1(源 Frame=3 回绕帧 1);lpos(-80,45.5)/(-80,-64.5) |
| Spirit3069/3070 | 按钮 | 154×25 (483,302)/(483,412) | Sprite sf=img337 帧1/2;lpos(-80,45.5)/(-80,-64.5) |
| Spirit3071 | 数字 FrameText="1" | 27×34 (416,297) | Sprite sf=img329 帧1(占位);contentSize 27×34(1 字符);lpos(-210.5,46) |
| Spirit3072 | 数字 FrameText="9999" | 108×34 (416,407) | Sprite sf=img329 帧1(占位);contentSize 108×34(4 字符);lpos(-170,-64) |
| Spirit3074 | 按钮 | 311×23 (409,194) | Sprite sf=img334 帧1(源 Frame=3 回绕帧 1);lpos(-75.5,154.5) |
| Spirit3073 | 文本 | 124×35 (389,489) | Label "Spirit3073" fs=20 **#8D170E**(暗红棕);contentSize 124×35;lpos(-189,-146.5) |
**group-94 输入区(20 sprite + 2 label)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit3075/3076 | 图标 | 49×49 (403,171)/(850,171) | Sprite sf=img324 帧1(源 Frame=3 回绕帧 1);lpos(-212.5,164.5)/(234.5,164.5) |
| Spirit3078 | 图标 | 77×46 (890,172) | Sprite sf=img16 帧1;lpos(288.5,165) |
| Spirit3077 | 图标 | 44×40 (463,175) | Sprite sf=img204 帧1;lpos(-155,165) |
| Spirit3079/3080 | 数字 FrameText="111"/"222" | 81×34 (550,178)/(1005,178) | Sprite sf=img329 帧1(占位);contentSize 81×34(3 字符);lpos(-49.5,165)/(405.5,165) |
| Spirit3081 | 头像框 | 70×70 (350,241) | Sprite sf=img336 帧1(物理 93×93 缩放至 70×70);contentSize 70×70;lpos(-255,84) |
| Spirit3082/3083 | 文本 | 62×25 (447,248)/(447,279) | Label " 待输入" fs=14 黑;contentSize 62×25;lpos(-162,99.5)/(-162,68.5) |
| Spirit3084/3085/3086 | 小按钮 | 51×25 (271,343)/(271,424)/(271,505) | Sprite sf=img322 帧1/2/3;lpos(-343.5,4.5)/(-343.5,-76.5)/(-343.5,-157.5) |
| Spirit3087/3088/3089 | 输入框 | 348×61 (339,325)/(339,406)/(339,487) | Sprite sf=img323 帧1(源 Frame=3 回绕帧 1);lpos(-127,4.5)/(-127,-76.5)/(-127,-157.5) |
| Spirit3090/3091/3092 | 输入条 | 233×25 (397,343)/(397,424)/(397,505) | Sprite sf=img325 帧3/1/2;lpos(-126.5,4.5)/(-126.5,-76.5)/(-126.5,-157.5) |
| Spirit3093/3094/3095 | 数字 FrameText="111" | 81×34 (362,338)/(361,419)/(360,500) | Sprite sf=img329 帧1(占位);contentSize 81×34;lpos(-237.5,5)/(-238.5,-76)/(-239.5,-157) |
| Spirit3096 | 按钮 | 104×55 (696,328) | Sprite sf=img330 帧1;lpos(108,4.5) |
**脚本驱动要点**:
- **四 group 结构**:group-91(主框架 + 物品格子 + 关闭)、group-92/93/94(仓库物品输入/操作区)。仓库是背包/物品展示与操作界面,脚本按业务显隐各 group 与格子。
- **FrameText 数字显示**(`ObjectType=2` + `TextFrames` 非空,见 1.10):10 个节点(Spirit3033/3056/3058="10000"、Spirit3071="1"、Spirit3072="9999"、Spirit3079="111"、Spirit3080="222"、Spirit3093/3094/3095="111")是仓库数量/数值显示——contentSize = 源 W×H(`字符数 × 单帧宽 27`),spriteFrame = img329 帧 1 占位,运行时脚本按数字逐位切帧(img329 为 10 帧数字 0-9)。
- **帧回绕**(见 1.10):img323/324(frame_all=2)源 Frame=3、img334(frame_all=1)源 Frame=3 均越界,回绕 `((N-1)%frame_all)+1` → 帧 1。
- **九宫格**:Spirit3030(img374 边框 400/200/346/245,新图)Sprite `_type=SLICED` 已设,spriteFrame border 待补(改 `.meta` 需先征得同意,见 1.9)。
- **缩放节点**:Spirit3081(img336 物理 93×93)contentSize=70×70(源 W/H),引擎按源尺寸缩放渲染。
- **动态文本**:4 个 Label(Spirit3042/3073/3082/3083)`_string` 均为占位,运行时替换(见 4.1)。
- **可点击**:全部 68 节点 `CanClick=1`。Spirit3065 MouseUp=3065(自引用)→ 脚本绑定(仓库某操作入口);其余 XML EventList 空(见 4.2)。
- **屏幕外元素**:Spirit3042(Label)源 Y=765,lpos.y=-422.5(屏幕下方),是源数据布局特征(运行时按需显隐/重定位)。
---
### 3.39 Layer26_Task.prefab(Task_Layer,任务列表)
源 Layer00026.xml:46 spirits(34 sprite + 12 label),单 group-10。Name="Task_Layer"。
**层级树**:
```
Layer26_Task (1600×720, Widget 45)
└─ group-10 (1600×720, Widget 45)
├─ Spirit112 任务遮罩 (1600×720, img11 全屏遮罩, Widget 45)
├─ Spirit119 任务前景 (1250×650, img10 拉伸)
├─ Spirit113 任务背景 (1250×650, img2 SLICED, 边框 250/200/346/245)
├─ Spirit176 侧边 (166×453, img10 拉伸)
├─ Spirit114 任务标题 (510×135, img40)
├─ Spirit690 顶部横幅 (403×76, img6 帧2)
├─ Spirit115 任务关闭 (83×84, img33)
├─ 任务卡片×5(背景 img43 帧1 + 领取 img55 帧1 + 做任务 img32 帧1)
│ ├─ Spirit120/121/122 预加载卡片(屏幕外左)
│ ├─ Spirit123/124/125 任务一
│ ├─ Spirit126/127/128 任务二
│ ├─ Spirit129/130/131 任务三
│ └─ Spirit132/133/134 任务四
├─ 任务描述×4:Spirit135/136/137/138 (Label fs14 深棕 #662910)
├─ 奖励说明×4:Spirit307/308/309/310 (Label fs14 黑)
├─ 进度背景×4:Spirit311/312/313/314 (img56)
├─ 进度前景×4:Spirit315/316/317/318 (img57)
├─ 已领取×4:Spirit328/329/330/331 (img58 帧2)
└─ 进度文字×4:Spirit319/320/321/322 (Label fs12,319 白 / 320~322 黑)
```
**group-10 框架(7 sprite)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit112 | 任务遮罩 | 1280×720 (0,0) | Sprite sf=img11 type=0;contentSize **1600×720**(全屏拉伸);lpos(0,0);Widget 45 |
| Spirit119 | 任务前景 | 1250×650 (15,50) | Sprite sf=img10 type=0;contentSize 1250×650;lpos(0,-15);Widget 16 hc=0 |
| Spirit113 | 任务背景 | 1250×650 (15,50) 边框 250/200/346/245 | Sprite sf=img2 type=SLICED;contentSize 1250×650;lpos(0,-15);Widget 16 hc=0 |
| Spirit176 | 侧边 | 166×453 (118,168) | Sprite sf=img10 type=0;contentSize 166×453;lpos(-439,-34.5);Widget 16 |
| Spirit114 | 任务标题 | 510×135 (496,-204) | Sprite sf=img40;contentSize 510×135;lpos(111,496.5);Widget 16 hc=111 |
| Spirit690 | 顶部横幅 | 403×76 (439,62) | Sprite sf=img6 帧2;contentSize 403×76;lpos(0.5,260);Widget 16 hc=0.5 |
| Spirit115 | 任务关闭 | 83×84 (1187,38) | Sprite sf=img33;contentSize 83×84;lpos(588.5,280);Widget 16 hc=588.5 |
**任务卡片(5 组 × 3 sprite,横向排列)**:
| 卡片 | 背景 img43 帧1 (269×453) | 领取 img55 帧1 (171×58) | 做任务 img32 帧1 (149×30) |
|---|---|---|---|
| 预加载(屏幕外左) | Spirit120 (-17,725)→(-522.5,-591.5) | Spirit121 (34,1086)→(-520.5,-755) | Spirit122 (49,1054)→(-516.5,-709) |
| 任务一 | Spirit123 (510,774)→(4.5,-640.5) | Spirit124 (556,1142)→(1.5,-811) | Spirit125 (568,1104)→(2.5,-759) |
| 任务二 | Spirit126 (822,771)→(316.5,-637.5) | Spirit127 (872,1139)→(317.5,-808) | Spirit128 (884,1101)→(318.5,-756) |
| 任务三 | Spirit129 (1091,771)→(585.5,-637.5) | Spirit130 (1143,1139)→(588.5,-808) | Spirit131 (1155,1101)→(589.5,-756) |
| 任务四 | Spirit132 (1360,771)→(854.5,-637.5) | Spirit133 (1414,1139)→(859.5,-808) | Spirit134 (1426,1101)→(860.5,-756) |
**进度条 + 已领取(4 组)**:
| 任务 | 进度背景 img56 (204×23) | 进度前景 img57 (202×21) | 已领取 img58 帧2 (81×26) |
|---|---|---|---|
| 任务一 | Spirit311 (543,1154)→(4,-804.5) | Spirit315 (316,1206)→(-223,-856.5) | Spirit328 (598,1139)→(-1.5,-792) |
| 任务二 | Spirit312 (858,1155)→(320,-806.5) | Spirit316 (858,1155)→(319,-805.5) | Spirit329 (914,1136)→(314.5,-789) |
| 任务三 | Spirit313 (1126,1155)→(588,-806.5) | Spirit317 (1126,1155)→(587,-805.5) | Spirit330 (1187,1136)→(587.5,-789) |
| 任务四 | Spirit314 (1391,1155)→(853,-806.5) | Spirit318 (1391,1155)→(852,-805.5) | Spirit331 (1462,1136)→(862.5,-789) |
**Label(12)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit135 | 任务一描述 | 200×25 (540,804) | Label "任务一描述一一依依一" fs=14 #662910;contentSize 200×25;lpos(0,-456.5) |
| Spirit136/137/138 | 任务二/三/四描述 | 84×25 (858/1126/1393,804) | Label "Spirit135" fs=14 #662910;lpos(260,-456.5)/(528,-456.5)/(795,-456.5) |
| Spirit307 | 任务一奖励说明 | 19×25 (581,1039) | Label "啊" fs=14 #000000;contentSize 19×25;lpos(-49.5,-691.5) |
| Spirit308/309/310 | 任务二/三/四奖励说明 | 75×25 (909/1180/1439,1036) | Label "Spirit307" fs=14 #000000;lpos(306.5,-688.5)/(577.5,-688.5)/(836.5,-688.5) |
| Spirit319 | 任务一进度文字 | 144×21 (585,1158) | Label "任务一进度文字说明" fs=12 **#FFFFFF**;contentSize 144×21;lpos(17,-808.5) |
| Spirit320/321/322 | 任务二/三/四进度文字 | 63×21 (931/1205/1475,1153/1154) | Label "Spirit319" fs=12 #000000;lpos(322.5,-803.5)/(596.5,-804.5)/(866.5,-804.5) |
**脚本驱动要点**:
- **单 group-10 结构**:任务列表是横向滚动的任务卡片流。任务一~四背景 X 从 510 到 1360(lx 4.5→854.5),横向排列;Spirit120/121/122("任务背景/领取/去做任务"无编号)在屏幕外左(X=-17/34/49),是滚动预加载/占位卡片。
- **任务卡片三件套**:每张卡 = 背景(img43 帧1,5 帧)+ 领取按钮(img55 帧1,2 帧)+ 做任务按钮(img32 帧1,2 帧)三独立 sprite 叠放,脚本按任务状态显隐/切帧(img43 多帧对应任务类型/状态,img55/32 双帧对应按钮两态)。
- **进度条**:img56(背景 204×23)+ img57(前景 202×21)叠放,前景 contentSize.width 按进度值缩放实现进度显示;任务一前景 Spirit315(X=316)与背景 Spirit311(X=543)偏移 227px,是源数据初始进度状态(逐字复刻,不兜底)。
- **已领取标记**:img58 帧 2(81×26)覆盖在领取按钮位置,脚本按任务是否已领取显隐(帧 1 未领取态 / 帧 2 已领取态)。
- **九宫格**:Spirit113(img2 边框 250/200/346/245)Sprite `_type=SLICED` 已设,与 Layer608 同边框。
- **全屏遮罩**:Spirit112(img11)contentSize 1600×720 拉伸,Widget 45。
- **屏幕外元素**:Spirit114 标题源 Y=-204(屏幕上方)、Spirit176 侧边源 X=118(屏幕外左)、Spirit120~122 预加载卡片(屏幕外左)、进度/领取元素源 Y 1100~1206(屏幕下方),均为源布局特征(横向滚动 + 卡片高度超出可视区,运行时滚动/显隐)。
- **动态文本**:12 个 Label 均占位(见 4.1)。
- **可点击**:全部 46 节点 `CanClick=1`。Spirit113 任务背景 MouseUp=113(自引用)→ 脚本绑定(点击背景返回/关闭);其余 XML EventList 空(见 4.2)。
---
### 3.40 Layer28_SeniorOptions.prefab(SeniorOptions_Layer,高级选项)
源 Layer00028.xml:56 spirits(45 sprite + 11 label),单 group-83。Name="SeniorOptions_Layer"。**源 Spirit Name 几乎全是 `Spirit{N}`,仅 Spirit652/653 有语义名「分享好友 / 分享朋友圈」**,故下方语义均为按 img 类型 + 布局推断(供脚本绑定参考,非源字段)。
**层级树**:
```
Layer28_SeniorOptions (1600×720, Widget 45)
└─ group-83 (1600×720, Widget 45)
├─ Spirit577 全屏遮罩 (1600×720, img382 拉伸, Widget 45)
├─ Spirit578 左面板背景 (656×497, img383 SLICED 55/45/55/45)
├─ Spirit3129 左内框 (542×174, img386 SLICED 55/45/55/45)
├─ Spirit581 左标题 (209×81, img385)
├─ Spirit579 左上图标 (124×77, img384)
├─ Spirit603 左下图标 (168×178, img230)
├─ Spirit611 右分隔条 (100×508, img10 拉伸)
├─ Spirit3135 右面板背景 (564×679, img392 SLICED 55/45/55/45)
├─ Spirit3137 右内框 (511×528, img386 SLICED 55/45/55/45)
├─ Spirit3136 右标题 (270×55, img393)
├─ 选项按钮 img219 帧1/2/3:Spirit3131 / Spirit580 / Spirit592
├─ 按钮 img225 帧2:Spirit627
├─ 分享按钮 img236:Spirit626 帧1 / Spirit652 分享好友 帧2 / Spirit653 分享朋友圈 帧3
├─ 勾选框 img390 帧2:Spirit3100 / 3166 / 3167
├─ 按钮 img391 帧2:Spirit3133 / 3164 / 3258
├─ 小按钮 img426:Spirit3238 帧1 / Spirit3257 帧2
├─ 按钮/条:Spirit3097 (img387) / Spirit3158 (img408) / Spirit3140 (img397) / Spirit3163 (img410) / Spirit625 (img229)
├─ 数字 FrameText img227 帧1:Spirit593/594/595/624/3099/3237
├─ 短号输入 img228 帧1:Spirit598
├─ 分隔线/图标:Spirit596 (img220) / Spirit597 (img221) / Spirit3132 (img389) / Spirit3130 (img388) / Spirit3138 (img395)
├─ 下方按钮:Spirit622 (img224 SLICED 90/90/90/90) / Spirit623 (img210 SLICED 103/20/103/20)
└─ Label ×11:Spirit599/600/601/628/3015/3098/3101/3134/3168/3169/3239
```
**框架(10 sprite)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit577 | 全屏遮罩 | 1280×720 (0,0) | Sprite sf=img382 type=0;contentSize **1600×720**(全屏拉伸);lpos(0,0);Widget 45 |
| Spirit578 | 左面板背景 | 656×497 (26,111) 边框 55/45/55/45 | Sprite sf=img383 SLICED;contentSize 656×497;lpos(-286,0.5);Widget 16 hc=-286 |
| Spirit3129 | 左内框 | 542×174 (81,186) 边框 55/45/55/45 | Sprite sf=img386 SLICED;contentSize 542×174;lpos(-288,87);Widget 16 |
| Spirit581 | 左标题 | 209×81 (141,8) | Sprite sf=img385;contentSize 209×81;lpos(-394.5,311.5);Widget 16 hc=-394.5 |
| Spirit579 | 左上图标 | 124×77 (0,0) | Sprite sf=img384;contentSize 124×77;lpos(-578,321.5);Widget 16 |
| Spirit603 | 左下图标 | 168×178 (53,-236) | Sprite sf=img230;contentSize 168×178;lpos(-503,507);Widget 16 |
| Spirit611 | 右分隔条 | 100×508 (740,118) | Sprite sf=img10 type=0;contentSize 100×508;lpos(150,-12);Widget 16 |
| Spirit3135 | 右面板背景 | 564×679 (702,21) 边框 55/45/55/45 | Sprite sf=img392 SLICED;contentSize 564×679;lpos(344,-0.5);Widget 16 hc=344 |
| Spirit3137 | 右内框 | 511×528 (729,110) 边框 55/45/55/45 | Sprite sf=img386 SLICED;contentSize 511×528;lpos(344.5,-14);Widget 16 |
| Spirit3136 | 右标题 | 270×55 (849,39) | Sprite sf=img393;contentSize 270×55;lpos(344,293.5);Widget 16 |
**九宫格(7 个,含边框)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit578 | img383 | 55/45/55/45 | 656×497 (26,111) | (-286,0.5) |
| Spirit3129 | img386 | 55/45/55/45 | 542×174 (81,186) | (-288,87) |
| Spirit3137 | img386 | 55/45/55/45 | 511×528 (729,110) | (344.5,-14) |
| Spirit3135 | img392 | 55/45/55/45 | 564×679 (702,21) | (344,-0.5) |
| Spirit622 | img224 | 90/90/90/90 | 485×169 (155,748) | (-242.5,-472.5) |
| Spirit623 | img210 | 103/20/103/20 | 208×45 (322,903) | (-214,-565.5) |
| Spirit3236 | img387 | 20/20/20/20 | 150×57 (194,476) | (-371,-144.5) |
> 注:img386 被 Spirit3129(拉伸 542×174)与 Spirit3137(拉伸 511×528)两处九宫格复用;img387 被 Spirit3097(普通 sprite)与 Spirit3236(九宫格)复用。九宫格 `_type=SLICED` 已设,border 存 spriteFrame .meta(待补,见 §5)。
**普通 Sprite + FrameText(38 个)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义(推断) |
|---|---|---|---|---|
| Spirit579 | img384 | 124×77 | (-578,321.5) | 左上角面板图标 |
| Spirit581 | img385 | 209×81 | (-394.5,311.5) | 标题图(FrameIndex=2 回绕帧 1) |
| Spirit603 | img230 | 168×178 | (-503,507) | 左下角装饰图标 |
| Spirit611 | img10 | 100×508 | (150,-12) | 左右面板分隔条(FrameIndex=3 回绕帧 1,拉伸) |
| Spirit3131 | img219 帧1 | 109×50 | (-523.5,200) | 选项按钮① |
| Spirit580 | img219 帧2 | 109×50 | (-521.5,-80) | 选项按钮② |
| Spirit592 | img219 帧3 | 109×50 | (-521.5,-204) | 选项按钮③ |
| Spirit627 | img225 帧2 | 109×74 | (-608.5,-473) | 按钮(屏幕外左备用) |
| Spirit626 | img236 帧1 | 204×85 | (-55,-302.5) | 分享按钮·帧 1 |
| Spirit652 分享好友 | img236 帧2 | 204×85 | (-513,-302.5) | 分享好友按钮 |
| Spirit653 分享朋友圈 | img236 帧3 | 204×85 | (-284,-302.5) | 分享朋友圈按钮 |
| Spirit3097 | img387 | 257×57 | (-317.5,-80.5) | 短号输入区按钮 |
| Spirit3158 | img408 | 241×50 | (-317.5,-80) | 短号输入框 |
| Spirit3130 | img388 | 111×21 | (-317.5,-80.5) | 短号输入区文本条 |
| Spirit3100 | img390 帧2 | 40×40 | (-279,420) | 勾选框① |
| Spirit3166 | img390 帧2 | 40×40 | (-248,-21) | 勾选框② |
| Spirit3167 | img390 帧2 | 40×40 | (-422,-21) | 勾选框③ |
| Spirit3133 | img391 帧2 | 191×57 | (-350.5,-204.5) | 按钮 |
| Spirit3164 | img391 帧2 | 191×57 | (451.5,292.5) | 按钮 |
| Spirit3258 | img391 帧2 | 191×57 | (-184.5,207.5) | 按钮 |
| Spirit3238 | img426 帧1 | 87×46 | (-521.5,-144) | 小按钮·帧 1 |
| Spirit3257 | img426 帧2 | 87×46 | (-355.5,210) | 小按钮·帧 2 |
| Spirit3140 | img397 | 144×62 | (-21,302) | 按钮(FrameIndex=2 回绕帧 1) |
| Spirit3163 | img410 | 110×30 | (256,293) | 小按钮(FrameIndex=2 回绕帧 1) |
| Spirit625 | img229 | 185×60 | (-614.5,-654) | 按钮(屏幕外左备用,FrameIndex=5 回绕帧 1) |
| Spirit596 | img220 | 503×18 | (48.5,480) | 横向分隔线 |
| Spirit597 | img221 | 70×52 | (258,480) | 小图标 |
| Spirit3132 | img389 | 75×26 | (-362.5,420) | 小标签 |
| Spirit3138 | img395 | 42×33 | (-50,-419.5) | 小图标(FrameIndex=2 回绕帧 1) |
| Spirit593 | img227 帧1 | 18×22 | (249,533) | 数字 FrameText |
| Spirit594 | img227 帧1 | 19×22 | (-238.5,480) | 数字 FrameText |
| Spirit595 | img227 帧1 | 28×22 | (328,480) | 数字 FrameText |
| Spirit624 | img227 帧1 | 90×22 | (-392,-405) | 数字 FrameText |
| Spirit3099 | img227 帧1 | 18×22 | (-409,-80) | 数字 FrameText(短号) |
| Spirit3237 | img227 帧1 | 18×22 | (-397,-144) | 数字 FrameText |
| Spirit598 | img228 帧1 | 156×37 | (-198,296.5) | 短号输入框数字 |
**Label(11)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit599 | 短号说明 | 418×25 (310,-207) | Label "其他玩家可通过输入短号快速加入您所创建的房间" fs=14 #000000;lpos(-121,554.5) |
| Spirit3015 | 房型说明 | 494×25 (388,-80) | Label "更改正在游戏中的房间,房间类型会在当前牌局结束后更新" fs=14 #000000;lpos(-5,427.5) |
| Spirit628 | 选项文字① | 75×25 (104,204) | Label "Spirit628" fs=14 **#FFFFFF**;lpos(-498.5,143.5) |
| Spirit3098 | 选项文字 | 114×25 (463,403) | Label "其他玩家可间" fs=14 #FFFFFF;lpos(-120,-55.5) |
| Spirit3101 | 选项文字 | 95×25 (285,-124) | Label "其他玩家可" fs=14 #000000;lpos(-307.5,471.5) |
| Spirit3134 | 选项文字 | 95×25 (397,552) | Label "其他玩家可" fs=14 #FFFFFF;lpos(-195.5,-204.5) |
| Spirit3168 | 选项文字② | 75×25 (253,369) | Label "Spirit628" fs=14 #FFFFFF;lpos(-349.5,-21.5) |
| Spirit3169 | 选项文字③ | 75×25 (433,369) | Label "Spirit628" fs=14 #FFFFFF;lpos(-169.5,-21.5) |
| Spirit3239 | 选项文字 | 114×25 (359,492) | Label "其他玩家可间" fs=14 #FFFFFF;lpos(-224,-144.5) |
| Spirit600 | 装饰点 | 5×23 (193,827) | Label "." fs=13 #FFFFFF;lpos(-444.5,-478.5) |
| Spirit601 | 装饰点 | 6×28 (390,756) | Label "." fs=16 #FFFFFF;lpos(-247,-410) |
**脚本驱动要点**:
- **单 group-83 结构**:左右双面板布局——左侧(x<640)为「高级房间选项」设置面板(Spirit578 背景 656×497 + Spirit3129 内框 + Spirit581 标题 + 短号输入 + 选项开关),右侧(x>640)为大面板(Spirit3135 背景 564×679 + Spirit3137 内框 + Spirit3136 标题),中间 Spirit611(img10 拉伸 100×508)为分隔条。
- **短号输入区(叠放三件套)**:Spirit3158(img408 输入框 241×50)+ Spirit3097(img387 按钮 257×57)+ Spirit3130(img388 文本条 111×21)三者 lpos 均为 (-317.5,-80.5) 叠放,是「短号输入」核心交互区;配合 Spirit598(img228 FrameText 156×37 显示输入数字)与 Spirit3099(img227 FrameText 短号数字)。
- **数字 FrameText**:img227(10 帧数字 18×22)/ img228(10 帧数字 26×37)为逐帧数字 sprite,脚本按值切帧显示短号/计数(Spirit593/594/595/624/3099/3237 + Spirit598)。
- **分享按钮三态**:img236 帧 1/2/3(204×85)——Spirit626(帧 1)、Spirit652 分享好友(帧 2)、Spirit653 分享朋友圈(帧 3)。源 Name 里 652/653 有语义名,是分享功能的两个入口按钮。
- **勾选框**:img390 帧 2(40×40)三个 Spirit3100/3166/3167,脚本按勾选状态显隐/切帧(帧 1 未勾选 / 帧 2 已勾选)。
- **多帧按钮 img219(帧 1/2/3)/ img426(帧 1/2)**:脚本按选中状态切帧。
- **九宫格**:7 处 SLICED 已设(border 见上表;img386 双节点复用,img387 普通+九宫格复用)。
- **全屏遮罩**:Spirit577(img382)contentSize 1600×720 拉伸,Widget 45。
- **帧回绕**:img385/10/229/395/397/410 源 FrameIndex(2/3/5/2/2/2)> frame_all=1,均回绕到帧 1(见 [[gameabc-frame-index-cyclic]])。
- **屏幕外元素**:Spirit625(lpos -614.5,屏幕外左)、Spirit627(lpos -608.5,屏幕外左)为备用按钮(运行时按状态移入/显隐),源布局特征。
- **动态文本**:11 个 Label 均占位(见 4.1);其中 Spirit600/601 为装饰点 "."(白色,非语义文本)。
- **可点击**:全部 56 节点 `CanClick=1`。Spirit577 遮罩 MouseUp=577、Spirit578 左面板 MouseUp=578、Spirit626 分享帧 1 MouseUp=626、Spirit3097 短号按钮 MouseUp=3097(均自引用,见 4.2);其余 XML EventList 空。
---
### 3.41 Layer402_GameNotice.prefab(GameNoticeLayer,游戏公告滚动)
源 Layer00402.xml:2 spirits(1 sprite + 1 label),单 group-56。Name="GameNoticeLayer"。**源 Spirit Name 有语义名**:Spirit389「游戏公告滚动」、Spirit390「内容」。
**层级树**:
```
Layer402_GameNotice (1600×720, Widget 45)
└─ group-56 (1600×720, Widget 45)
├─ Spirit389 游戏公告滚动 (629×40, img39 SLICED 1/1/1/1)
└─ Spirit390 内容 (Label "的" fs20 白)
```
**九宫格(1 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit389 | img39 | 1/1/1/1 | 629×40 (326,78) | (0.5,262) |
**Label(1)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit390 | 内容(公告文字) | 27×35 (561,78) | Label "的" fs=20 #FFFFFF;lpos(-65.5,264.5) |
**脚本驱动要点**:
- 单 group-56,顶部「游戏公告滚动」横幅:Spirit389(img39 九宫格 629×40 背景)+ Spirit390(公告内容 Label,初始 "的" 占位,运行时滚动替换为公告文字)。
- Spirit389 img39 原始 629×36 拉伸到 contentSize 629×40(源 Width/Height 直接采用,见 §1.7)。
- 全部 2 节点 `CanClick=1`,EventList 空(无 MouseUp 自引用)。
---
### 3.42 Layer403.prefab(Layer403,准备按钮)
源 Layer00403.xml:1 spirit(1 sprite),单 group-81。Name="Layer403"(无语义名,故 prefab 用 `Layer403`)。**Spirit515 有语义名「准备」**。
**层级树**:
```
Layer403 (1600×720, Widget 45)
└─ group-81 (1600×720, Widget 45)
└─ Spirit515 准备 (184×80, img208 帧1)
```
**Sprite(1)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit515 | 准备按钮 | 184×80 (27,271) | Sprite sf=img208 帧1;contentSize 184×80;lpos(111,-41);Widget 16 |
**脚本驱动要点**:
- 单 group-81,仅一个「准备」按钮(img208 帧1,184×80)——玩家点击「准备」开始游戏的入口。
- `CanClick=1`,EventList 空。img208 为 2 帧(帧1=准备 / 帧2=开始),本 Layer 只用到帧1(帧2 在 Layer404 Spirit184「开始」)。
---
### 3.43 Layer404_MainSceneButton.prefab(MainSceneButton_Layer,主场景按钮)
源 Layer00404.xml:6 spirits(5 sprite + 1 label),单 group-28。Name="MainSceneButton_Layer"。**仅 Spirit184 有语义名「开始」,其余 Spirit183/195/569/657/658 无语义名**(下方语义为按 img 推断)。
**层级树**:
```
Layer404_MainSceneButton (1600×720, Widget 45)
└─ group-28 (1600×720, Widget 45)
├─ Spirit657 (570×60, img87) 顶部横幅背景
├─ Spirit569 (300×70, img215 帧1)
├─ Spirit183 (300×70, img215 帧2)
├─ Spirit184 开始 (184×80, img208 帧2)
├─ Spirit195 (494×28, img181 帧1)
└─ Spirit658 (Label "s" fs16 白)
```
**Sprite(5)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义(推断) |
|---|---|---|---|---|
| Spirit657 | img87 | 570×60 | (0,273) | 顶部横幅背景(XML type=0,非全屏) |
| Spirit569 | img215 帧1 | 300×70 | (0,227) | 主按钮①(img215 帧1) |
| Spirit183 | img215 帧2 | 300×70 | (0,142) | 主按钮②(img215 帧2) |
| Spirit184 开始 | img208 帧2 | 184×80 | (-102,-41) | 开始按钮 |
| Spirit195 | img181 帧1 | 494×28 | (6,466) | 底部条 |
**Label(1)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit658 | 横幅文本 | 10×28 (-801,91) | Label "s" fs=16 #FFFFFF;lpos(-185,273) |
**脚本驱动要点**:
- 单 group-28,主场景按钮层:顶部 Spirit657(img87 横幅 570×60)+ Spirit658 文本叠放;Spirit569/183(img215 帧1/2,300×70)双态按钮;Spirit184「开始」(img208 帧2,184×80);Spirit195(img181 帧1,494×28)底部条。
- img215 双态(帧1/2)、img208 双态(帧1=准备 Layer403 / 帧2=开始 本层)——脚本按状态切帧。
- 全部 6 节点 `CanClick=1`,EventList 空。
---
### 3.44 Layer405_MainButton.prefab(MainButton_Layer,主按钮)
源 Layer00405.xml:6 spirits(4 sprite + 2 label),单 group-21。Name="MainButton_Layer"。**Spirit152「录音按钮」/ Spirit153「消息按钮」有语义名**,Spirit3115/3116/3118/3119 无语义名。
**层级树**:
```
Layer405_MainButton (1600×720, Widget 45)
└─ group-21 (1600×720, Widget 45)
├─ Spirit152 录音按钮 (88×88, img68 帧2)
├─ Spirit153 消息按钮 (88×88, img68 帧1)
├─ Spirit3118 (27×27, img342 SLICED 13/13/13/13)
├─ Spirit3115 (102×64, img343)
├─ Spirit3116 (Label "Spirit3116" fs12 黑)
└─ Spirit3119 (Label "12" fs12 白)
```
**九宫格(1 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit3118 | img342 | 13/13/13/13 | 27×27 (1183,1086) | (605.5,-273.5) |
**Sprite(3,除九宫格外)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit152 录音按钮 | img68 帧2 | 88×88 | (576,-214) | 录音按钮 |
| Spirit153 消息按钮 | img68 帧1 | 88×88 | (576,-311) | 消息按钮 |
| Spirit3115 | img343 | 102×64 | (505,-264) | 消息图标(FrameIndex=4 回绕帧 1) |
**Label(2)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit3116 | 说明文字 | 72×21 (960,1113) | Label "Spirit3116" fs=12 #000000;lpos(320,-433.5) |
| Spirit3119 | 未读数 | 18×21 (1229,1093) | Label "12" fs=12 #FFFFFF;lpos(605,-272.5) |
**脚本驱动要点**:
- 单 group-21,主按钮层(录音/消息入口):Spirit152 录音按钮(img68 帧2)、Spirit153 消息按钮(img68 帧1)——img68 为 2 帧(帧1=消息 / 帧2=录音)。
- 消息按钮叠加:Spirit3118(img342 九宫格 27×27 底)+ Spirit3115(img343 102×64 图标)+ Spirit3119("12" 未读数 Label)叠放,构成带角标的按钮。
- Spirit3119 "12" 为未读数占位(运行时替换);Spirit3116 "Spirit3116" 为说明文字占位。
- img343 源 FrameIndex=4 > frame_all=1,回绕到帧 1(见 [[gameabc-frame-index-cyclic]])。
- 全部 6 节点 `CanClick=1`,EventList 空。
---
### 3.45 Layer411.prefab(Layer411,房号栏)
源 Layer00411.xml:6 spirits(5 sprite + 1 FrameText),单 group-81。Name="Layer411"(无语义名,故 prefab 用 `Layer411`)。**Spirit3143「房号背景」/ 3144「解散」/ 3145「退出」/ 3146「房号」/ 3147「房号tag」有语义名**,Spirit3151 无语义名。
**层级树**:
```
Layer411 (1600×720, Widget 45)
└─ group-81 (1600×720, Widget 45)
├─ Spirit3143 房号背景 (742×48, img400)
├─ Spirit3144 解散 (160×80, img404 帧2)
├─ Spirit3145 退出 (160×80, img404 帧3→1, MouseUp=3145)
├─ Spirit3146 房号 (102×21, img398 帧1 FrameText)
├─ Spirit3147 房号tag (59×25, img399)
└─ Spirit3151 (160×60, img403)
```
**Sprite + FrameText(6)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit3143 房号背景 | img400 | 742×48 | (-52,612) | 房号背景 |
| Spirit3144 解散 | img404 帧2 | 160×80 | (209,612) | 解散按钮 |
| Spirit3145 退出 | img404 帧3→1 | 160×80 | (-298,612) | 退出按钮(MouseUp=3145 自引用) |
| Spirit3146 房号 | img398 帧1 | 102×21 | (-71,611.5) | 房号数字 FrameText(type=4) |
| Spirit3147 房号tag | img399 | 59×25 | (-163.5,611.5) | 房号 tag |
| Spirit3151 | img403 | 160×60 | (63,614) | 图标/按钮(无语义名) |
**脚本驱动要点**:
- 单 group-81,顶部房号栏:Spirit3143 房号背景(img400 742×48)+ Spirit3146 房号数字 FrameText(img398 帧1)+ Spirit3147 房号 tag(img399)叠放显示房间号。
- Spirit3144 解散(img404 帧2)/ Spirit3145 退出(img404 帧3 回绕帧1)——img404 为 2 帧(帧1=退出 / 帧2=解散)。
- **Spirit3145 退出 `MouseUp=3145`(自引用)**——点击退出触发关闭/退出流程;其余 EventList 空。
- img404 源 FrameIndex=3 > frame_all=2,回绕到帧 1(`((3-1)%2)+1=1`)。
- 全部 6 节点 `CanClick=1`。
---
### 3.46 Layer420_CheckFree.prefab(CheckFree_Layer,确认解散)
源 Layer00420.xml:7 spirits(6 sprite + 1 label),单 group-36。Name="CheckFree_Layer"。**Spirit242「确认解散遮罩」/ 243「确认解散背景」/ 244「确认底」/ 247「关闭解散确认」/ 246「取消」/ 245「确认」有语义名**,Spirit361 无语义名。
**层级树**:
```
Layer420_CheckFree (1600×720, Widget 45)
└─ group-36 (1600×720, Widget 45)
├─ Spirit242 确认解散遮罩 (1600×720, img11 拉伸, Widget 45)
├─ Spirit243 确认解散背景 (637×212, img41 SLICED 55/45/55/45)
├─ Spirit244 确认底 (550×120, img42 SLICED 53/48/53/48)
├─ Spirit247 关闭解散确认 (83×84, img33)
├─ Spirit245 确认 (157×74, img179 帧1)
├─ Spirit246 取消 (157×74, img179 帧2, MouseUp=246)
└─ Spirit361 (Label "1" fs20 白)
```
**九宫格(2 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit243 | img41 | 55/45/55/45 | 637×212 (313,208) | (0.5,44) |
| Spirit244 | img42 | 53/48/53/48 | 550×120 (356,188) | (0,55) |
**Sprite(4,除九宫格外)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit242 确认解散遮罩 | img11 | 1600×720 | (0,0) | 全屏遮罩(Widget 45 拉伸) |
| Spirit247 关闭解散确认 | img33 | 83×84 | (-256.5,-489) | 关闭按钮 |
| Spirit245 确认 | img179 帧1 | 157×74 | (-130.5,-59) | 确认按钮 |
| Spirit246 取消 | img179 帧2 | 157×74 | (143.5,-59) | 取消按钮(MouseUp=246 自引用) |
**Label(1)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit361 | 提示文字 | 15×35 (411,273) | Label "1" fs=20 #FFFFFF;lpos(-228.5,54.5) |
**脚本驱动要点**:
- 单 group-36,确认解散弹窗:Spirit242 全屏遮罩(img11 拉伸)+ Spirit243 背景(img41 九宫格)+ Spirit244 底(img42 九宫格)+ Spirit361 提示文字。
- 按钮:Spirit245 确认(img179 帧1)/ Spirit246 取消(img179 帧2)——img179 为 2 帧(帧1=确认 / 帧2=取消)。
- **Spirit246 取消 `MouseUp=246`(自引用)**——点击取消关闭弹窗;Spirit247 关闭解散确认(img33)为另一关闭入口。
- 全部 7 节点 `CanClick=1`。
---
### 3.47 Layer408_Interact.prefab(Interact_Layer,互动动画)
源 Layer00408.xml:21 spirits(21 sprite),双 group(21 + 39)。Name="Interact_Layer"。4 组互动动画有语义名(互动动画 / 互动动画2 / 互动动画3 / 互动动画4),Spirit466 无语义名。
**层级树**:
```
Layer408_Interact (1600×720, Widget 45)
├─ group-21 (1600×720, Widget 45)
│ └─ Spirit466 (2×2, img10) ⚠️ 异常 2×2,见脚本驱动要点
└─ group-39 (1600×720, Widget 45)
├─ Spirit274~278 互动动画 (143×135, img99 帧1) ×5
├─ Spirit292~296 互动动画2 (110×98, img102 帧1) ×5
├─ Spirit297~301 互动动画3 (200×100, img103 帧1) ×5
└─ Spirit302~306 互动动画4 (130×130, img104 帧1) ×5
```
**Sprite(21,无九宫格 / 无 Label)**:
| 组 | 节点 | img(帧) | 尺寸 | lpos 范围 |
|---|---|---|---|---|
| group-21 | Spirit466 | img10 | 2×2 | (-639, 359) |
| group-39 | Spirit274~278 | img99 帧1(7帧) | 143×135 | x∈[-755.5,554.5] y∈[-457.5,445.5] |
| group-39 | Spirit292~296 | img102 帧1(12帧) | 110×98 | x∈[-758,916] y∈[-477,175] |
| group-39 | Spirit297~301 | img103 帧1(4帧) | 200×100 | x∈[-715,778] y∈[-327,193] |
| group-39 | Spirit302~306 | img104 帧1(12帧) | 130×130 | x∈[-742,833] y∈[-585,226] |
**脚本驱动要点**:
- group-39 为 20 个互动动画(4 组各 5 个,分散在牌桌四周),全部 `CanClick=1`,均用**帧 1** 落盘(脚本运行时切帧播放动画):img99(7 帧)/ img102(12 帧)/ img103(4 帧)/ img104(12 帧)。
- **Spirit466(group-21)是 img10 2×2 的异常 sprite**:源数据 SizeRelaWidth 恒等于 Width(编辑器默认),忠实复刻 contentSize=2×2,lpos=(-639,359)。语义存疑(可能是源工程遗留占位),待运行时验证,不做臆测修正。
- img103 单帧实际 400×200,但 spirit 渲染 200×100(源数据 2x 缩放)。
### 3.48 Layer409_ChatVoice.prefab(Chat_Voice_Layer,语音聊天)
源 Layer00409.xml:20 spirits(20 sprite),单 group-76。Name="Chat_Voice_Layer"。Spirit612「语音气泡」/ Spirit642「语音动画」有语义名,其余气泡(613~621)/ 动画(643~651)无语义名。
**层级树**:
```
Layer409_ChatVoice (1600×720, Widget 45)
└─ group-76 (1600×720, Widget 45)
├─ Spirit612~621 语音气泡 (127×63, img83 SLICED 30/20/30/20) ×10
└─ Spirit642~651 语音动画 (20×25, img100 帧1) ×10
```
**九宫格(10 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit612~621 | img83 | 30/20/30/20 | 127×63 各 | (-512.5,-267.5)…(84.5,-470.5) |
**Sprite(10,除九宫格外)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit642~651 | img100 帧1(3帧) | 20×25 | (-547,-264.5)…(47,-468.5) | 语音动画 |
**脚本驱动要点**:
- 10 组「气泡 + 语音动画」成对布局:Spirit612 气泡 ↔ Spirit642 动画、Spirit613 ↔ Spirit643 … Spirit621 ↔ Spirit651。
- 气泡 img83 九宫格(30/20/30/20),动画 img100 3 帧用帧 1。
- 全部 20 节点 `CanClick=1`。
### 3.49 Layer410_ChatText.prefab(Chat_Text_Layer,文字聊天)
源 Layer00410.xml:20 spirits(10 sprite + 10 label),单 group-75。Name="Chat_Text_Layer"。Spirit552「聊天气泡」/ Spirit582「聊天内容」有语义名,其余气泡(553~561)/ 文本(583~591)无语义名。
**层级树**:
```
Layer410_ChatText (1600×720, Widget 45)
└─ group-75 (1600×720, Widget 45)
├─ Spirit552~561 聊天气泡 (127×63, img83 SLICED 30/20/30/20) ×10
└─ Spirit582~591 聊天文本 (Label fs14 白) ×10
```
**九宫格(10 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit552~561 | img83 | 30/20/30/20 | 127×63 各 | (-434.5,-200.5)…(-43.5,-644.5) |
**Label(10 个)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit582 | 聊天内容 | 76×25 (143,547) | Label "聊天内容" fs=14 #FFFFFF;lpos(-459,-199.5) |
| Spirit583~591 | 聊天文本占位 | 75×25 各 | Label fs=14 #FFFFFF(源 text="Spirit582" 占位,运行时 set) |
**脚本驱动要点**:
- 10 组「气泡 + 文本」成对:Spirit552 气泡 ↔ Spirit582 文本 … Spirit561 ↔ Spirit591。
- 文本源数据 text 均为占位("聊天内容" / "Spirit582"),运行时 `set string` 填充实际聊天内容;字号 14、白色 #FFFFFF。
- 全部 20 节点 `CanClick=1`。
### 3.50 Layer413_BtnPanel.prefab(btnPannelLayer,按钮面板)
源 Layer00413.xml:18 spirits(14 sprite + 3 label + 1 其它),四 group(21 / 99 / 100 / 81)。Name="btnPannelLayer"。按钮有语义名(游戏界面设置/帮助/退出按钮/更换房间/逃跑/下载/解散),Spirit110「房间号」有语义名。
**层级树**:
```
Layer413_BtnPanel (1600×720, Widget 45)
├─ group-21 (1600×720, Widget 45)
│ └─ Spirit107 (100×88, img377)
├─ group-99 (1600×720, Widget 45)
│ ├─ Spirit108 侧边 (396×720, img378 SLICED 1/1/1/1)
│ ├─ Spirit3123 底 (1145×720, img10 SLICED 1/1/1/1)
│ └─ Spirit151/150/233/3014/513/656/185 按钮×7 (155×80, img238 帧1~7)
├─ group-100 (1600×720, Widget 45)
│ ├─ Spirit109 大背景 (280×126, img379 SLICED 90/90/90/90)
│ ├─ Spirit3124 全屏底 (1280×720, img10 SLICED 1/1/1/1)
│ ├─ Spirit512 图标 (72×29, img205)
│ └─ Spirit110 房间号 / Spirit111 (Label fs13)
└─ group-81 (1600×720, Widget 45)
├─ Spirit3148 输入框 (141×33, img402 SLICED 20/50/20/10)
├─ Spirit3149 图标 (54×60, img401)
└─ Spirit3150 (Label fs14)
```
**九宫格(5 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit108 侧边 | img378 | 1/1/1/1 | 396×720 (0,0) | (-442,0) |
| Spirit3123 底 | img10 | 1/1/1/1 | 1145×720 (135,0) | (67.5,0) |
| Spirit109 大背景 | img379 | 90/90/90/90 | 280×126 (341,2) | (-159,295) |
| Spirit3124 全屏底 | img10 | 1/1/1/1 | 1280×720 (0,0) | (0,0) |
| Spirit3148 输入框 | img402 | 20/50/20/10 | 141×33 (814,7) | (244.5,336.5) |
**Sprite(9,除九宫格外)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit107 | img377 | 100×88 | (-596,321) | group-21 图标 |
| Spirit151 | img238 帧1 | 155×80 | (-562.5,245) | 游戏界面设置 |
| Spirit150 | img238 帧2 | 155×80 | (-562.5,152) | 游戏界面帮助 |
| Spirit233 | img238 帧3 | 155×80 | (-562.5,-34) | 退出按钮 |
| Spirit3014 | img238 帧4 | 155×80 | (-562.5,-127) | 更换房间 |
| Spirit513 | img238 帧5 | 155×80 | (-562.5,-220) | 逃跑 |
| Spirit656 | img238 帧6 | 155×80 | (-562.5,-313) | 下载 |
| Spirit185 | img238 帧7 | 155×80 | (-562.5,59) | 解散 |
| Spirit512 | img205 | 72×29 | (-85,320.5) | group-100 图标 |
| Spirit3149 | img401 | 54×60 | (460,330) | group-81 图标 |
**Label(3)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit110 | 房间号 | 8×23 (421,28) | Label fs=13 #000000;lpos(-215,320.5) |
| Spirit111 | — | 8×23 (369,68) | Label fs=13 #98927E;lpos(-267,280.5) |
| Spirit3150 | — | 9×25 (814,7) | Label fs=14 #3C3C3C;lpos(178.5,340.5) |
**脚本驱动要点**:
- 四 group:group-21 图标、group-99 左侧按钮栏(7 个 img238 按钮 + img378 侧边 + img10 底)、group-100 房号栏(img379 背景 + img10 全屏底 + img205 图标 + 房号文本)、group-81 输入框(img402 + img401 + 文本)。
- **img238 为 7 帧(1×7)按钮图**,7 个按钮各用一帧(设置/帮助/退出/更换房间/逃跑/下载/解散),脚本切换 active 态。
- 文本 Spirit110「房间号」fs13 黑、Spirit111 fs13 棕(#98927E)、Spirit3150 fs14 深灰(#3C3C3C),均占位 "s",运行时 set。
- 全部 18 节点 `CanClick=1`。
### 3.51 Layer416_PlayerInfo.prefab(MainScene_PlayerInfo_Layer,玩家信息)
源 Layer00416.xml:16 spirits(10 sprite + 6 label),双 group(77 + 38)。Name="MainScene_PlayerInfo_Layer"。Spirit215「个人信息遮罩」有语义名,其余无语义名。
**层级树**:
```
Layer416_PlayerInfo (1600×720, Widget 45)
├─ group-77 (1600×720, Widget 45)
│ ├─ Spirit215 个人信息遮罩 (1600×720, img11 拉伸)
│ ├─ Spirit216 背景 (454×325, img54 SLICED 70/70/70/70)
│ ├─ Spirit282 头像 (105×103, img25)
│ └─ Spirit279/280/281/511/3125 (Label fs14 黑) ×5
└─ group-38 (1600×720, Widget 45)
└─ Spirit256~263 表情图标 (80×80, img105 SLICED 20/20/20/20) ×8
```
**九宫格(9 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit216 背景 | img54 | 70/70/70/70 | 454×325 (414,198) | (1,-0.5) |
| Spirit256~263 表情 | img105 | 20/20/20/20 | 80×80 各 | 上排 (-139…146,-89) / 下排 (-150…135,-505) |
**Sprite(2,除九宫格外)**:
| 节点 | img | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit215 个人信息遮罩 | img11 | 1600×720 | (0,0) | 全屏遮罩(Widget 45 拉伸) |
| Spirit282 头像 | img25 | 105×103 | (-125.5,51.5) | 玩家头像 |
**Label(5)**:
| 节点 | 源尺寸/位置 | 迁移 |
|---|---|---|
| Spirit279~281 / 511 / 3125 | 75×25 (596,231~367) | Label fs=14 #000000(源 text="Spirit766" 占位,运行时 set 昵称/ID/签名等) |
**脚本驱动要点**:
- 双 group:group-77 玩家信息面板(遮罩 img11 + 背景 img54 九宫格 + 头像 img25 + 5 个动态文本),group-38 表情/快捷语图标栏(img105 九宫格 ×8,上排 4 + 下排 4)。
- img54 九宫格边框 70/70/70/70(与 Layer17 一致);img105 边框 20/20/20/20。
- 5 个文本(昵称/ID/签名等)源数据均为 "Spirit766" 占位,运行时 `set string` 填充。
- 全部 16 节点 `CanClick=1`。
### 3.52 Layer418_ChatPannel.prefab(ChatPannel_Layer,聊天面板)
源 Layer00418.xml:54 spirits(48 sprite + 6 label),单 group-30。Name="ChatPannel_Layer"。这是对局聊天总面板,包含常用语、表情、历史记录、系统公告和发送区。
**层级树**:
```
Layer418_ChatPannel (1600×720, Widget 45)
└─ group-30 (1600×720, Widget 45)
├─ 聊天遮罩 / 聊天背景 / 聊天底
├─ 常用语 / 表情 tab + 聊天输入框
├─ 常用语1~7
├─ Spirit528~547 表情×20
├─ 表情父精灵 / 历史记录父精灵 / 系统公告父精灵(初始隐藏)
├─ 历史记录/公告附属图标与文本
└─ 发送 + Spirit3113 + Spirit3111
```
**九宫格(4 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸 | lpos |
|---|---|---|---|---|
| 聊天背景 Spirit187 | img41 | 55/45/55/45 | 753×671 | (248.5,4.5) |
| 聊天底 Spirit213 | img84 | 20/20/20/20 | 541×509 | (331.5,-45.5) |
| Spirit163 | img83 | 30/20/30/20 | 400×63 | (339,432.5) |
| Spirit3112 | img342 | 13/13/13/13 | 27×27 | (36.5,-26.5) |
**主要 Sprite**:
- 聊天遮罩 Spirit186:img11,源 1280×720,迁移为 1600×720 全屏拉伸。
- 常用语/表情 tab:img81 帧 1/2;常用语1~7:img85 帧 1~7。
- 表情 Spirit528~547:img147~166,共 20 个 100×100 图标;Spirit538 使用 img157 帧 30,其余按源 FrameIndex。
- 三个父精灵 Spirit467/696/3109:img10,分别为表情、历史记录、系统公告容器底,均保持 `active=false` 初始隐藏。
- 历史记录/公告区使用 img175、img81、img100 帧3、img167 帧1~4、img3、img344;发送按钮 Spirit205 使用 img82。
**Label(6)**:
| 节点 | 源文本 | 源尺寸 | 迁移 |
|---|---|---|---|
| 聊天输入框 Spirit204 | 空 | 420×50 | fs20 #000000,WordWrap;源 `AutoSize=0`,用 `CLAMP` 保持输入区域尺寸 |
| Spirit164 / Spirit480 | "啊" | 19×25 | fs14 #FFFFFF;源 `AutoSize=1`,用 `NONE` 随运行期文本自动扩展 |
| Spirit3110 | "s" | 9×25 | fs14 #FFFFFF;源 `AutoSize=1`,用 `NONE` 随运行期文本自动扩展 |
| Spirit3114 | "12" | 18×21 | fs12 #FFFFFF;源 `AutoSize=1`,用 `NONE` 随运行期文本自动扩展 |
| Spirit3117 | "12" | 18×21 | fs12 #000000;源 `AutoSize=1`,用 `NONE` 随运行期文本自动扩展 |
**脚本驱动要点**:
- 常用语、表情、历史记录、系统公告是同一 group 内的互斥区域;脚本按 tab 切换相关节点显隐。
- Label 严格按源 `AutoSize` 分流:仅 Spirit204(`AutoSize=0`)使用 `CLAMP` 固定输入区域;其余 5 个动态文本(`AutoSize=1`)使用 `NONE` 保留自动尺寸语义,避免聊天记录/公告长文本被初始窄尺寸裁切。
- 源 XML 仅 Spirit186(聊天遮罩)和 Spirit696(历史记录父精灵)有自引用 `MouseUp`;业务绑定阶段分别处理关闭面板与历史记录区域点击。
### 3.53 Layer202_PlayerHeadScore.prefab(Player_Head_Score_Layer,玩家头像分数)
源 Layer00202.xml:60 spirits(40 sprite + 20 label),11 group(43~52 + 73)。Name="Player_Head_Score_Layer"。Spirit468「表情底」有语义名,其余无语义名。
**层级树**:
```
Layer202_PlayerHeadScore (1600×720, Widget 45)
├─ group-43~52 玩家座位 ×10 (1600×720, Widget 45) 每 group:
│ ├─ 九宫格底 (129×176, img76 SLICED 45/45/45/45)
│ ├─ 头像 (93×93, img116~125)
│ ├─ 昵称 Label (86×25, fs14 #FFCB5C "玩家1昵称")
│ └─ 积分 Label (38×25, fs14 #FFCB5C "积分")
└─ group-73 表情 ×20 (1600×720, Widget 45)
├─ Spirit468~477 表情底 (105×99, img146) ×10
└─ Spirit498~507 表情 (100×100, img147 帧1) ×10
```
**九宫格(10 个)**:
| 节点 | img | 边框 L/T/R/B | 源尺寸/位置 | lpos |
|---|---|---|---|---|
| Spirit346~355 | img76 | 45/45/45/45 | 129×176 各 | (-541.5,-261)…(382.5,-563) |
**Sprite(30,除九宫格外)**:
| 节点 | img(帧) | 尺寸 | lpos | 语义 |
|---|---|---|---|---|
| Spirit376~385 | img116~125 | 93×93 | (-547.5,-238.5)…(378.5,-515.5) | 玩家头像 |
| Spirit468~477 | img146 | 105×99 | (-547.5,-240.5)…(381.5,-514.5) | 表情底 |
| Spirit498~507 | img147 帧1(5帧) | 100×100 | (-547,-239)…(383,-514) | 表情图标 |
**Label(20 个)**:
| 节点 | 语义 | 源尺寸/位置 | 迁移 |
|---|---|---|---|
| Spirit406~415 | 玩家昵称 | 86×25 各 | Label "玩家1昵称" fs=14 #FFCB5C;运行时 set 昵称 |
| Spirit436~445 | 玩家积分 | 38×25 各 | Label "积分" fs=14 #FFCB5C;运行时 set 积分 |
**脚本驱动要点**:
- 11 group:group-43~52 是 10 个玩家座位(环绕牌桌四周),group-73 是表情动画(10 组「表情底 + 表情图标」)。
- 每座位 4 件套成对:九宫格底(Spirit346~355)↔ 头像(Spirit376~385)↔ 昵称(Spirit406~415)↔ 积分(Spirit436~445)。
- 昵称/积分文本 fs=14 橙金 #FFCB5C,源 text="玩家1昵称"/"积分" 为占位,运行时 `set string` 填充实际玩家昵称/积分。
- 表情:img146 底 + img147 帧1(5 帧多帧图,落盘用帧 1,运行时切帧播放表情动画)。
- 全部 60 节点 `CanClick=1`,其中 Spirit346(group-43 座位底)/ Spirit349(group-46 座位底)源 Event `MouseUp=自身 ID`(点击头像框触发查看玩家),其余空 Event(按需绑定)。
- img76 九宫格边框 45/45/45/45(单一使用,已写入 spriteFrame border)。
---
## 4. 脚本驱动汇总
### 4.1 动态文本节点(脚本需 set string)
| prefab | 节点 | 初始 _string |
|---|---|---|
| Layer616_Kick | 强制退出提示文字 | "强制退出提示文字"(占位,运行时替换) |
| Layer612_Tips | 提示文字(group-32) | "提示文字"(占位,运行时替换) |
| Layer612_Tips | Spirit3013(group-89) | "提示文字"(占位,运行时替换) |
| Layer617_iMessage | 即时通知信息内容 | "小"(占位,运行时替换) |
| Layer601 | Spirit3154 | ""(空,运行时填充) |
| Layer601 | Spirit3160 | "Spirit3160"(占位,运行时替换) |
| Layer608_Help | 帮助文字 | "帮助文字"(占位,运行时替换) |
| Layer606_Apply | Spirit166~175(等待列表) | "等待"(占位,运行时填充投票玩家) |
| Layer606_Apply | Spirit264~273(昵称列表) | "昵称"(占位,运行时填充投票玩家) |
| Layer4_MainMenu | Spirit220 公告文字 | "公告文字"(占位,运行时替换为实际公告) |
| Layer4_MainMenu | Spirit340 微信公众号内容 | "微信公众号内容"(占位,运行时替换) |
| Layer4_MainMenu | Spirit497 | "1000"(房卡数量值,运行时替换) |
| Layer4_MainMenu | Spirit681 客服QQ | "客服QQ说明"(占位,运行时替换为实际客服QQ号) |
| Layer50_MainScene | Spirit291 | "Spirit291"(占位,运行时替换为房间/昵称信息) |
| Layer19_WorldRoomList | Spirit526/3020/3022/3024(group-96 卡片文本) | "啊"/"s"/"Spirit526"(占位,运行时替换为房主名/房间信息) |
| Layer19_WorldRoomList | Spirit564/3021/3023/3025/3165(group-97 卡片文本) | "Spirit526"/"s"(占位,运行时替换为房主名/房间信息) |
| Layer19_WorldRoomList | Spirit527/562/563/565(group-82 列表头/框架文本) | "Spirit526"(占位,运行时替换为列表内容) |
| Layer27_CreateRoom | Spirit672/673/674/675(选项文本) | "Spirit672"(占位,运行时替换为局数/下注上限/玩法选项值) |
| Layer11_ChargeInfo | Spirit148 充值提示文字 | "充值提示文字"(占位,运行时替换) |
| Layer11_ChargeInfo | Spirit680 | "字"(占位,运行时替换) |
| Layer16_Bind | Spirit365 | ""(空,运行时填充绑定内容) |
| Layer16_Bind | Spirit368 | "Spirit368"(占位,运行时替换) |
| Layer8_Notice | Spirit145 公告内容 | "公告内容"(占位,运行时替换为实际公告,白色) |
| Layer18_Auth | Spirit489/490/491/492(授权文字) | ""(空)/ "Spirit491"/"Spirit492"(占位,运行时替换为授权说明,黑色) |
| Layer17_PlayerInfo | Spirit196/197/198/199/200/510/3152/3157(玩家信息字段) | "Spirit196"/"Spirit766"(占位,运行时替换为昵称/ID/个性签名等,黑色) |
| Layer21_RankList | Spirit632/633/636/637/638/640/641(排行榜条目) | "色丰富飞的放到的是是 "/"Spirit632"(占位,运行时替换为昵称/分数;640/641 暗红 #6C130F 标名次) |
| Layer12_CombatLayer | Spirit65/66/89(战绩文字内容) | "战绩文字"(占位,运行时替换为战绩条目内容;89 fontSize=24) |
| Layer12_CombatLayer | Spirit67/90(白色文本) | "a"/"昵称积分"(占位,运行时替换,白色) |
| Layer12_CombatLayer | Spirit685(黄色装饰文本) | " "(9 空格,黄色 #E4EA1E,装饰/隐藏用途) |
| Layer7_ewm | Spirit3209/3212/3261(弹窗一文字) | "Spirit3209"/"s"/"s"(占位,运行时替换,黑色;3261 fontSize=12) |
| Layer7_ewm | Spirit3224(弹窗二白字) | "Spirit3224"(占位,运行时替换,白色) |
| Layer7_ewm | Spirit3226/3229/3230(弹窗二文字) | "Spirit3226"(占位,运行时替换,黑色) |
| Layer9_Feedback | 反馈输入内容 | ""(空,运行时填充反馈内容,fs=20 黑) |
| Layer9_Feedback | 通知内容 | "消"(占位,运行时替换为通知正文,fs=16 深棕 #662910) |
| Layer29_PhoneInfo | Spirit3279/3292(白名单文本) | "Spirit3209"(占位,运行时替换为玩家ID/数值,fs=14 黑) |
| Layer29_PhoneInfo | Spirit3280/3283/3288(白名单小文本) | "s"(占位,运行时替换,fs=14 黑) |
| Layer6 | Spirit3171/3198 ID、Spirit3259(group-103 牌桌) | "ID"/"Spirit3259"(占位,运行时替换,白) |
| Layer6 | Spirit3177~3180/3188/3189(group-103 小数点) | "."(牌桌金额/数字小数点分隔,运行时随位数移动,白/深棕 #3C280A) |
| Layer6 | Spirit289 ID、Spirit288 昵称(group-3 头部) | "ID"/"昵称"(占位,运行时替换为玩家ID/昵称;昵称橙金 #FFCB5C) |
| Layer14_Pay | Spirit426~435(group-53 金额文本×10) | "Spirit426"(占位,运行时替换为实际金额值,fs=20 黑) |
| Layer25_wareHouse | Spirit3042/3073/3082/3083(仓库文本×4) | "Spirit3042"/"Spirit3073"/" 待输入"(占位,运行时替换为仓库物品名/数值/输入提示;3073 暗红棕 #8D170E fs=20,3082/3083 fs=14 黑) |
| Layer26_Task | Spirit135/136/137/138(描述)、Spirit307/308/309/310(奖励说明)、Spirit319/320/321/322(进度文字) | "任务一描述一一依依一"/"Spirit135"/"啊"/"Spirit307"/"任务一进度文字说明"/"Spirit319"(占位,运行时替换为任务描述/奖励说明/进度;135~138 fs=14 深棕 #662910,307~310 fs=14 黑,319 白 #FFFFFF,320~322 fs=12 黑) |
| Layer28_SeniorOptions | Spirit599/3015(说明文字)、Spirit628/3098/3101/3134/3168/3169/3239(选项文字)、Spirit600/601(装饰点) | "其他玩家可通过输入短号快速加入您所创建的房间"/"更改正在游戏中的房间,房间类型会在当前牌局结束后更新"/"Spirit628"/"其他玩家可间"/"其他玩家可"/"."(占位,运行时替换;599/3015/3101 fs=14 黑 #000000,628/3098/3134/3168/3169/3239 fs=14 白 #FFFFFF,600 fs=13 白,601 fs=16 白) |
| Layer402_GameNotice | Spirit390(公告内容) | "的"(占位,运行时滚动替换为公告文字,fs=20 白 #FFFFFF) |
| Layer404_MainSceneButton | Spirit658(横幅文本) | "s"(占位,运行时替换为横幅内容,fs=16 白 #FFFFFF) |
| Layer405_MainButton | Spirit3116(说明文字)、Spirit3119(未读数) | "Spirit3116"/"12"(占位,运行时替换;3116 fs=12 黑 #000000,3119 fs=12 白 #FFFFFF 未读数) |
| Layer420_CheckFree | Spirit361(提示文字) | "1"(占位,运行时替换为确认解散提示,fs=20 白 #FFFFFF) |
| Layer410_ChatText | Spirit582(聊天内容)、Spirit583~591 | "聊天内容"/"Spirit582"(占位,运行时替换为聊天文本,fs=14 白 #FFFFFF) |
| Layer413_BtnPanel | Spirit110(房间号)、Spirit111、Spirit3150 | "s"(占位,运行时替换为房间号/说明;110 fs=13 黑 #000000,111 fs=13 棕 #98927E,3150 fs=14 深灰 #3C3C3C) |
| Layer416_PlayerInfo | Spirit279/280/281/511/3125(玩家信息字段) | "Spirit766"(占位,运行时替换为昵称/ID/个性签名等,fs=14 黑 #000000) |
| Layer418_ChatPannel | Spirit204(聊天输入框)、Spirit164/480/3110/3114/3117(历史/公告文本) | 空/"啊"/"s"/"12"(运行时替换为输入内容、历史记录或公告;fs=12/14/20,颜色见 §3.52) |
| Layer202_PlayerHeadScore | Spirit406~415(昵称)、Spirit436~445(积分) | "玩家1昵称"/"积分"(占位,运行时替换为玩家昵称/积分,fs=14 橙金 #FFCB5C) |
### 4.2 可点击节点(脚本需 bind 回调)
| prefab | 节点 | 源 Event | 语义 |
|---|---|---|---|
| Layer614_Loading | 载入遮罩 | MouseUp=326(自引用) | 点击关闭 loading |
| Layer619_BackHall | Spirit465 | 空 | 返回大厅按钮 |
| Layer615_Reconnect | 掉线遮罩 | 空 | 点击取消重连/关闭(按需绑定) |
| Layer10_Protol | Spirit253 | 空 | 关闭协议弹窗 |
| Layer10_Protol | 协议遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer612_Tips | Spirit3193 | 空 | 提示遮罩(点击关闭,按需绑定) |
| Layer612_Tips | Spirit3012 | 空 | 九宫格提示按钮(点击关闭/确认,按需绑定) |
| Layer620_Record | Spirit3126 | 空 | 记录遮罩(点击关闭,按需绑定) |
| Layer620_Record | Spirit3127 | 空 | 记录背景(按需绑定) |
| Layer620_Record | Spirit3128 | 空 | 记录动画(按需绑定) |
| Layer618 | Spirit654 | 空 | 全屏背景(按需绑定) |
| Layer618 | Spirit655 | 空 | 遮罩(IsVisible=0,按需绑定) |
| Layer603 | Spirit3267 | 空 | 遮罩(点击关闭,按需绑定) |
| Layer603 | Spirit3268 | 空 | 双帧图标·帧1(按需绑定) |
| Layer603 | Spirit3269 | 空 | 双帧图标·帧2(按需绑定) |
| Layer617_iMessage | 即时通知背景 | 空 | 横幅背景(按需绑定) |
| Layer617_iMessage | 即时通知图标 | 空 | 通知图标(按需绑定) |
| Layer617_iMessage | 即时通知关闭 | 空 | 关闭通知按钮(按需绑定) |
| Layer601 | Spirit3153 | MouseUp=3153(自引用) | 点击遮罩关闭 |
| Layer601 | Spirit3155 | 空 | 右侧按钮·上(按需绑定) |
| Layer601 | Spirit3159 | 空 | 右侧按钮·下(按需绑定) |
| Layer608_Help | 帮助遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer608_Help | 关闭帮助 | 空 | 关闭帮助弹窗按钮 |
| Layer609_Setting | 设置遮罩 | MouseUp=42(自引用) | 点击遮罩关闭 |
| Layer609_Setting | Spirit387 | MouseUp=387(自引用) | 点击该图标关闭/切换 |
| Layer609_Setting | 退出登录 | 空 | 退出登录按钮(按需绑定) |
| Layer609_Setting | 申请解散 | 空 | 申请解散按钮(按需绑定) |
| Layer609_Setting | 邀请好友 | 空 | 邀请好友按钮(按需绑定) |
| Layer609_Setting | 音乐图标 | 空 | 音乐图标(按需绑定) |
| Layer609_Setting | 音效图标 | 空 | 音效图标(按需绑定) |
| Layer602_inputPannel | Spirit660 | MouseUp=660(自引用) | 点击背景关闭输入面板 |
| Layer602_inputPannel | Spirit670(帧 9) | MouseUp=670(自引用) | 点击该键关闭(疑「确定」键) |
| Layer602_inputPannel | Spirit3004 | 空 | 关闭输入面板按钮 |
| Layer602_inputPannel | Spirit3217 | 空 | 删除键(退格,按需绑定) |
| Layer602_inputPannel | Spirit661~671/3000(12 键) | 空 | 数字键盘按键(按需绑定各自键值) |
| Layer606_Apply | Spirit189 | 空 | 遮罩(点击关闭,按需绑定) |
| Layer606_Apply | Spirit201 | 空 | 同意投票按钮 |
| Layer606_Apply | Spirit202 | 空 | 拒绝投票按钮 |
| Layer606_Apply | Spirit223 | 空 | 投票结果确认键 |
| Layer607_Cal | Spirit391 | MouseUp=391(自引用) | 关闭计算器按钮 |
| Layer607_Cal | Spirit375 | 空 | 关闭图标(按需绑定) |
| Layer607_Cal | Spirit371 | 空 | 遮罩(点击关闭,按需绑定) |
| Layer607_Cal | Spirit392~403(12 键) | 空 | 数字键盘按键(按需绑定各自键值) |
| Layer4_MainMenu | Spirit4 主界面背景 | MouseUp=4(自引用) | 点击背景(按需绑定) |
| Layer4_MainMenu | Spirit679 | MouseUp=679(自引用) | 点击大厅主视觉(按需绑定) |
| Layer4_MainMenu | Spirit219 公告底 | MouseUp=219(自引用) | 点击公告栏(打开公告详情) |
| Layer4_MainMenu | Spirit16 广告 | MouseUp=16(自引用) | 点击广告(按需绑定) |
| Layer4_MainMenu | Spirit340 微信公众号内容 | MouseUp=340(自引用) | 点击公众号文字(按需绑定) |
| Layer4_MainMenu | Spirit11 创建房间 | 空 | 创建房间按钮 |
| Layer4_MainMenu | Spirit12 加入房间 | 空 | 加入房间按钮 |
| Layer4_MainMenu | Spirit7/13/14/17/3120(tab) | 空 | 底部导航 tab:设置/战绩/分享/任务/更多 |
| Layer4_MainMenu | Spirit483 比赛场 | 空 | 比赛场按钮 |
| Layer4_MainMenu | Spirit568 星星场平台 | 空 | 星星场平台按钮 |
| Layer4_MainMenu | Spirit3016 商城按钮 | 空 | 商城按钮 |
| Layer4_MainMenu | Spirit3018 福袋 | 空 | 福袋按钮 |
| Layer4_MainMenu | Spirit99 房间列表按钮 | 空 | 房间列表按钮 |
| Layer4_MainMenu | Spirit234 更多按钮 | 空 | 更多按钮 |
| Layer4_MainMenu | Spirit3139 | 空 | 主按钮(无名称,按需绑定) |
| Layer4_MainMenu | Spirit76 二维码 | 空 | 二维码(按需绑定) |
| Layer4_MainMenu | Spirit339 微信公众号 | 空 | 微信公众号按钮 |
| Layer50_MainScene | Spirit149 背景 | MouseUp=149(自引用) | 点击背景(按需绑定) |
| Layer50_MainScene | Spirit284 | MouseUp=284(自引用) | 点击顶部横幅(按需绑定) |
| Layer50_MainScene | Spirit336 wifi | MouseUp=336(自引用) | 点击 wifi(按需绑定) |
| Layer50_MainScene | Spirit291 | MouseUp=291(自引用) | 点击文本(按需绑定) |
| Layer15_JoinRoom | Spirit27 加入房间遮罩 | 空 | 遮罩(点击关闭,按需绑定) |
| Layer15_JoinRoom | Spirit59 加入房间关闭按钮 | 空 | 关闭加入房间弹窗按钮 |
| Layer15_JoinRoom | Spirit68 加入房间标题 | MouseUp=68(自引用) | 点击标题(按需绑定) |
| Layer15_JoinRoom | Spirit236 房间号1 | MouseUp=236(自引用) | 点击房间号(按需绑定) |
| Layer15_JoinRoom | Spirit29~40/514(数字键盘 12 键) | 空 | 数字键盘按键(按需绑定各自键值) |
| Layer19_WorldRoomList | Spirit516 遮罩 | MouseUp=516(自引用) | 点击遮罩关闭(按需绑定) |
| Layer19_WorldRoomList | Spirit519 关闭/返回 | 空 | 关闭/返回房间列表按钮 |
| Layer19_WorldRoomList | 刷新 Spirit520 | 空 | 刷新房间列表按钮 |
| Layer19_WorldRoomList | Spirit94 进入房间 | MouseUp=94(自引用) | 进入房间按钮 |
| Layer19_WorldRoomList | Spirit96/521/3019/92/93 卡片按钮 | 空 | 房间卡片/列表按钮(按需绑定) |
| Layer27_CreateRoom | Spirit18 遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer27_CreateRoom | Spirit60 关闭按钮 | 空 | 关闭创建房间弹窗 |
| Layer27_CreateRoom | Spirit25 确定创建 | 空 | 确认创建房间按钮 |
| Layer27_CreateRoom | Spirit20/21 局数选择 | 空 | 选择局数(按需绑定) |
| Layer27_CreateRoom | Spirit22/23/24 下注上限选择 | 空 | 选择下注上限(按需绑定) |
| Layer27_CreateRoom | Spirit139/140 玩法选择 | 空 | 选择玩法(按需绑定) |
| Layer11_ChargeInfo | Spirit146 遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer11_ChargeInfo | Spirit147 背景 | 空 | 充值提示背景(按需绑定) |
| Layer13 | Spirit55 战绩返回 | 空 | 返回战绩列表 |
| Layer13 | Spirit61 战绩关闭按钮 | 空 | 关闭战绩弹窗 |
| Layer13 | Spirit104/105 分页箭头 | 空 | 翻页(上一页/下一页,按需绑定) |
| Layer22_Share | Spirit72 遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer22_Share | Spirit74 微信好友 | 空 | 分享给微信好友 |
| Layer22_Share | Spirit75 朋友圈 | 空 | 分享到朋友圈 |
| Layer16_Bind | Spirit362 遮罩 | 空 | 点击遮罩关闭(按需绑定) |
| Layer16_Bind | Spirit366/367 绑定按钮 | 空 | 绑定操作按钮(按需绑定) |
| Layer16_Bind | Spirit364 | 空 | 按需绑定 |
| Layer24_Neighbor | Spirit3005 邻居遮罩 | MouseUp=3005(自引用) | 点击遮罩关闭 |
| Layer24_Neighbor | Spirit3011 关闭 | 空 | 关闭邻居弹窗按钮 |
| Layer24_Neighbor | Spirit3007~3010 邻居项 | 空 | 查看/进入邻居(按需绑定) |
| Layer8_Notice | Spirit3122 更多遮罩 | 空 | 点击遮罩关闭更多面板(IsVisible=0 初始隐藏,按需绑定) |
| Layer8_Notice | Spirit3017 背包 | 空 | 背包功能入口按钮(按需绑定) |
| Layer8_Notice | Spirit5 通知 | 空 | 通知功能入口按钮(按需绑定) |
| Layer8_Notice | Spirit235 绑定按钮 | 空 | 绑定功能入口按钮(按需绑定) |
| Layer8_Notice | Spirit604 排行榜 | 空 | 排行榜功能入口按钮(按需绑定) |
| Layer8_Notice | Spirit3057 仓库 | 空 | 仓库功能入口按钮(按需绑定) |
| Layer8_Notice | Spirit15 反馈 | 空 | 反馈功能入口按钮(按需绑定) |
| Layer18_Auth | Spirit485 授权遮罩 | 空 | 点击遮罩关闭授权弹窗(IsVisible=0 初始隐藏,按需绑定) |
| Layer18_Auth | Spirit487/488 授权选项 | 空 | 授权选项按钮(授权/取消,按需绑定) |
| Layer18_Auth | Spirit493 授权主按钮 | 空 | 授权确认入口按钮(按需绑定) |
| Layer17_PlayerInfo | Spirit116 个人信息遮罩 | 空 | 点击遮罩关闭玩家信息菜单(按需绑定) |
| Layer17_PlayerInfo | Spirit484 按钮 | 空 | 玩家信息按钮(按需绑定) |
| Layer17_PlayerInfo | Spirit494/495 边缘图标 | 空 | 边缘图标(关闭/装饰,按需绑定) |
| Layer21_RankList | Spirit605 遮罩 | 空 | 点击遮罩关闭排行榜(按需绑定) |
| Layer21_RankList | Spirit629 箭头 | 空 | 排行榜箭头(翻页/返回,按需绑定) |
| Layer21_RankList | Spirit636~641 列表条目 | 空 | 排行榜条目(查看玩家,按需绑定) |
| Layer12_CombatLayer | Spirit49 遮罩 | 空 | 点击遮罩关闭战绩弹窗(按需绑定) |
| Layer12_CombatLayer | Spirit53 返回 | 空 | 返回/关闭战绩(按需绑定) |
| Layer12_CombatLayer | Spirit51 详情1 / Spirit54 查牌 | 空 | 查看对局详情 / 查牌(按需绑定) |
| Layer12_CombatLayer | Spirit48 背景 / Spirit70 标题 | 空 | 战绩背景 / 标题(按需绑定) |
| Layer12_CombatLayer | Spirit50/52/57/56/63/87 底与前景 | 空 | 战绩页底/前景装饰(按需绑定) |
| Layer12_CombatLayer | Spirit683/684/689/83/82/64/88/86/91 装饰 | 空 | 装饰元素(按需绑定) |
| Layer7_ewm | Spirit3200/3218 遮罩 | 空 | 点击遮罩关闭二维码弹窗(按需绑定) |
| Layer7_ewm | Spirit3203/3222 关闭 | 空 | 关闭二维码弹窗按钮(img=415,按需绑定) |
| Layer7_ewm | Spirit3206/3208/3216 按钮 | 空 | 二维码操作按钮(img=413 帧 1/2 两态,按需绑定) |
| Layer7_ewm | Spirit3201/3219 背景 / Spirit3205 标题 | 空 | 二维码背景 / 标题(按需绑定) |
| Layer9_Feedback | Spirit548/77/341/103 遮罩(反馈/通知/二维码/房间列表) | 空 | 点击遮罩关闭对应弹窗(按需绑定) |
| Layer9_Feedback | Spirit550 反馈提交 | 空 | 提交反馈按钮(按需绑定) |
| Layer9_Feedback | Spirit80 通知关闭 | 空 | 关闭通知弹窗按钮(按需绑定) |
| Layer9_Feedback | Spirit100/101 房间列表项 | 空 | 房间列表项(进入房间,按需绑定) |
| Layer9_Feedback | Spirit570~575 通知条目/分类标签 | 空 | 查看通知 / 切换分类标签(按需绑定) |
| Layer9_Feedback | Spirit343/344/345 二维码 | 空 | 二维码图/文字/底(按需绑定) |
| Layer29_PhoneInfo | Spirit3241/3270 遮罩(手机验证/白名单) | 空 | 点击遮罩关闭对应弹窗(Spirit3241 active=false 初始隐藏,按需绑定) |
| Layer29_PhoneInfo | Spirit3251 关闭 | 空 | 关闭手机验证弹窗按钮(按需绑定) |
| Layer29_PhoneInfo | Spirit3253 确认 / Spirit3252 主按钮 | 空 | 手机验证确认 / 主操作按钮(按需绑定) |
| Layer29_PhoneInfo | Spirit3245 验证码按钮 | 空 | 获取验证码按钮(按需绑定) |
| Layer29_PhoneInfo | Spirit3274 关闭 | 空 | 关闭白名单管理弹窗按钮(按需绑定) |
| Layer29_PhoneInfo | Spirit3275/3282/3287 白名单按钮 | 空 | 白名单操作按钮(img=412 九宫格,按需绑定) |
| Layer29_PhoneInfo | Spirit3278/3281 操作按钮 | 空 | 操作按钮(img=413 帧1,按需绑定) |
| Layer29_PhoneInfo | Spirit3289 图标 | 空 | 搜索/删除图标(img=188 帧1,按需绑定) |
| Layer6 | Spirit9 头像框 | MouseUp=9(自引用) | 点击头像框(按需绑定) |
| Layer6 | Spirit478 | MouseUp=478(自引用) | 点击玩家信息头(按需绑定) |
| Layer6 | Spirit286 | MouseUp=286(自引用) | 点击(按需绑定) |
| Layer6 | Spirit3194 | MouseUp=3194(自引用) | 点击(按需绑定) |
| Layer6 | Spirit8 头像 | 空 | 点击头像查看玩家(按需绑定) |
| Layer6 | Spirit10 购买房卡 | 空 | 购买房卡按钮 |
| Layer14_Pay | Spirit46/456 支付遮罩(group-53/54) | 空 | 点击遮罩关闭(按需绑定) |
| Layer14_Pay | Spirit386 关闭 | 空 | 关闭支付金额选择弹窗按钮 |
| Layer14_Pay | Spirit416~425 金额按钮(×10) | 空 | 选择金额(按需绑定对应金额值) |
| Layer14_Pay | Spirit457 九宫格背景 | MouseUp=457(自引用) | 确认支付/关闭确认弹窗 |
| Layer14_Pay | Spirit461/462/463/464 确认/取消按钮 | 空 | 确认支付/取消(463 屏幕外备用,按需绑定) |
| Layer25_wareHouse | Spirit3065 小按钮 | MouseUp=3065(自引用) | 仓库操作入口(脚本绑定) |
| Layer25_wareHouse | 其余 67 节点 | 空 | 全部 CanClick=1——Spirit3029 遮罩(点击关闭)、Spirit97 关闭、Spirit3043 确认键、Spirit3044/3045~3055 物品格子×12(选择物品)、Spirit3059/3060 左侧 tab(切换分类)、其余输入框/按钮(按需绑定) |
| Layer26_Task | Spirit113 任务背景 | MouseUp=113(自引用) | 点击任务背景(返回/关闭,脚本绑定) |
| Layer26_Task | 其余 45 节点 | 空 | 全部 CanClick=1——Spirit112 遮罩(点击关闭)、Spirit115 任务关闭、Spirit114 标题/Spirit690 横幅(按需)、任务卡片 Spirit120~134 背景/领取/做任务(进入任务/领取奖励/跳转)、Spirit328~331 已领取(按需)、Spirit311~318 进度条(按需) |
| Layer28_SeniorOptions | Spirit577 遮罩 / Spirit578 左面板 / Spirit626 分享帧1 / Spirit3097 短号按钮 | MouseUp=577/578/626/3097(自引用) | 点击遮罩关闭 / 左面板背景 / 分享 / 短号输入按钮 |
| Layer28_SeniorOptions | 其余 52 节点 | 空 | 全部 CanClick=1——Spirit652/653 分享好友/朋友圈、Spirit3131/580/592 选项按钮(img219 帧1/2/3)、Spirit3100/3166/3167 勾选框(img390 帧2)、Spirit3133/3164/3258 按钮(img391 帧2)、Spirit3238/3257 小按钮(img426)、Spirit598 短号输入、Spirit622/623 下方按钮、Spirit627/625 屏幕外备用按钮(按需绑定) |
| Layer402_GameNotice | 全部 2 节点 | 空 | 全部 CanClick=1——Spirit389 公告横幅(点击打开公告详情)、Spirit390 内容(按需绑定) |
| Layer403 | Spirit515 准备 | 空 | 准备按钮(点击开始游戏) |
| Layer404_MainSceneButton | 全部 6 节点 | 空 | 全部 CanClick=1——Spirit184 开始(进入游戏)、Spirit569/183 主按钮(img215 帧1/2)、Spirit657 横幅/Spirit658 文本(按需)、Spirit195 底条(按需) |
| Layer405_MainButton | 全部 6 节点 | 空 | 全部 CanClick=1——Spirit152 录音按钮、Spirit153 消息按钮、Spirit3115 消息图标、Spirit3118 九宫格底(按需) |
| Layer411 | Spirit3145 退出 | MouseUp=3145(自引用) | 点击退出(关闭/退出流程) |
| Layer411 | 其余 5 节点 | 空 | 全部 CanClick=1——Spirit3144 解散(解散房间)、Spirit3143 房号背景/Spirit3146 房号/Spirit3147 房号tag(按需)、Spirit3151(按需) |
| Layer420_CheckFree | Spirit246 取消 | MouseUp=246(自引用) | 点击取消关闭弹窗 |
| Layer420_CheckFree | 其余 6 节点 | 空 | 全部 CanClick=1——Spirit245 确认(确认解散)、Spirit247 关闭解散确认、Spirit242 遮罩(点击关闭)、Spirit243/244 背景/底(按需) |
| Layer408_Interact | 全部 21 节点 | 空 | 全部 CanClick=1——Spirit466 遮罩(按需)+ group-39 互动动画×20(img99/102/103/104 帧1,点击触发互动动画,按需绑定) |
| Layer409_ChatVoice | 全部 20 节点 | 空 | 全部 CanClick=1——气泡×10(img83)+ 语音动画×10(img100),点击播放语音/聊天,按需绑定 |
| Layer410_ChatText | 全部 20 节点 | 空 | 全部 CanClick=1——气泡×10(img83)+ 文本×10(聊天内容,点击展开聊天,按需绑定) |
| Layer413_BtnPanel | 全部 18 节点 | 空 | 全部 CanClick=1——7 按钮(img238 帧1~7:设置/帮助/退出/更换房间/逃跑/下载/解散)、Spirit107 图标、Spirit512/3149 图标、Spirit108/3123/109/3124/3148 九宫格、3 文本(按需绑定) |
| Layer416_PlayerInfo | 全部 16 节点 | 空 | 全部 CanClick=1——Spirit215 遮罩(点击关闭)、Spirit216 背景、Spirit282 头像(查看玩家)、Spirit256~263 表情图标×8(发送快捷语)、5 文本(按需绑定) |
| Layer418_ChatPannel | 聊天遮罩 Spirit186 / 历史记录父精灵 Spirit696 | MouseUp=186/696(自引用) | 关闭聊天面板 / 点击历史记录区域 |
| Layer418_ChatPannel | 其余 52 节点 | 空 | 全部 CanClick=1——常用语/表情 tab、常用语×7、表情×20、历史记录/公告区域、输入框与发送按钮(按需绑定) |
| Layer202_PlayerHeadScore | Spirit346(group-43 座位底)、Spirit349(group-46 座位底) | MouseUp=346/349(自引用) | 点击头像框触发查看玩家 |
| Layer202_PlayerHeadScore | 其余 58 节点 | 空 | 全部 CanClick=1——Spirit347/348/350~355 座位底、Spirit376~385 头像(查看玩家)、Spirit406~415 昵称 / Spirit436~445 积分(按需)、Spirit468~507 表情底+表情图标×20(发送表情,按需绑定) |
### 4.3 源 Event → Cocos 绑定映射
原工程 XML `EventList`(`MouseDown`/`MouseUp`/`MouseMove`/`OnTimer`)的 `Value` 是**回调目标 ObjectID**(`1`/空 = 无)。迁移时用 `bind_button_click_event` 把 Button 点击绑定到对应脚本 handler。若目标 ObjectID 指向自身,语义通常是「点击自身关闭该 Layer」。
---
## 5. 待验证事项
1. **`LineSpace` → `_lineHeight` 映射**:当前用 `lineHeight = fontSize`(对齐 Login_Layer 参考),但源 XML `LineSpace=0` 的精确语义(默认行距 vs 额外间距)待更多 Text 样本确认。
2. **`FontBold` / `AlignHorz` / `AlignVert` / `WordWrap` → cc.Label** 的完整映射:复杂 Layer(含富文本/多行/对齐文本)迁移时补齐。
3. **`FrameStyle`/`FrameIndex` 多帧 sprite**:Layer615 重连动画(ImgID=97,8 帧)是首个多帧案例,已迁移第 1 帧为 spriteFrame;运行时逐帧动画驱动(脚本切 spriteFrame 或 cc.Animation)待实现。
4. **`Option.vx/vy/vw/vh` 动画物理**:deferred 到 game logic 迁移。
5. **Label 运行期 contentSize 自收紧**:实测(Layer612)Label 节点的 UITransform 在运行期会把 contentSize 从源 W×H(如 84×28)自动收紧为文本包围盒(如 64×20.16,`overflow=NONE` 下仍发生,仅 Label、Sprite 不受影响)。Layer418 已按源 `AutoSize` 区分:Spirit204(`AutoSize=0`)用 `CLAMP` 保持 420×50 输入区域;Spirit164/480/3110/3114/3117(`AutoSize=1`)保留 `NONE` 自动尺寸语义。旧 Layer 的统一迁移策略仍待脚本绑定阶段决定。
6. **九宫格 border 跨 Layer 冲突(`img2`/`img407` 待决策)**:同一图片被多 Layer 以不同边距使用,Cocos 一个 spriteFrame 只能存一个 border(详见 memory `funplay-9slice-border-multi-layer-conflict`)。`img2` 有 4 组边距(250/200/346/245 L15/L26/L27/L608、100/134/100/135 L609、55/45/55/45 L21、90/90/90/90 L29),`img407` 有 2 组(20/20/20/20 L17、150/25/150/25 L29)——均涉及已迁移 Layer,border 仍 0,需决策按哪组写默认 spriteFrame、离群组建副本。`img54` 已按 70/70/70/70 写入(L17/L416 一致),L2 的 100/80/100/80 待 L2 迁移时建副本。
---
## 关联文档
- `docs/superpowers/specs/UI-手工迁移规范.md`(9 步迁移流程 + 8 项验证清单)
- `docs/superpowers/specs/原工程数据模型.md`(JSON schema + 锚点公式)
- `docs/superpowers/data/layer-spirit-summary.json`(Layer → prefab 映射表)