# M2 KV 命名一致性只读盘点 日期:2026-09-29。仅扫描客户端源码与本工作区合成测试;不访问本机服务器代码。本文件是命名问题盘点,不是重命名方案或编码批准。CP3A 独立补审与既有交付 hash 保持原样。 ## 源码事实 - C# 源码及测试工程中精确 `PlayKV` 为 **0**;大量名称实际是 `PlayerKV*`,其中 `Player` 原指玩家数据,并非 PlayFab。名称容易视觉上混淆,且新 KV 栈位于 `game.PlayerDataStorage`。 - 客户端约有 **127 个** `PlayerKV*` 类型声明(31 public、96 internal)、**24 个** `PlayerKV*.cs` 文件、**75 个**含引用的脚本文件及 **4 个** Editor 脚本文件;合成测试侧约 **88 个**源码/工程文件及 **16 个** `.csproj` 含引用。数字按当前工作树只读扫描,实施前必须重扫。 - 多个测试工程直接列出 `PlayerKV*.cs` 路径或用该前缀通配;Editor 验证和测试存在反射字符串,如 `game.PlayerDataStorage.PlayerKVRuntimeSelection`、`PlayerKVGameplayLoop`。文件重命名要随 `.meta` 保持 Unity GUID,不能只替换 C# token。 - 当前 `KVMgr` 名称已是提供方无关的 KV 入口,但它引用部分 `PlayerKV*` 类型;`PlayFabUserService` partial 内承载正式 KV 登录,`PlayFabMgr` 仍有 Editor KV loop 分支。这是**服务职责/提供方边界**问题,不能靠 `PlayerKV` 批量换名消除。现有 `Core/KVMgr.cs → Services/PlayerData` 物理反向依赖也仍在另一个已记录的架构纠偏范围。 - 当前阶段多个独立审查文件与交付 hash 指向旧路径和旧名称,应作为历史证据保留;新命名须单独立基线与交付记录,不回写旧审查证据。 ## 已确认的处理时点 用户明确裁决:**移植期间保留现有 `PlayerKV*` 名称,不在 CP2A/CP3A/CP2B 或后续业务迁移中穿插改名;完整移植完成后再处理命名。** 因此当前无需决定 `KVPlayer*`、`KV*` 或仅对外入口哪种映射,也不生成兼容别名。届时先重扫实际保留类型,清理闲置实现,再形成独立无行为变化的完整方案、精确白名单与受审基线;同步源码/测试/反射字符串/`.csproj`/Unity `.meta`,用 Unity CLI Loop 与合成测试验证。历史审查/交付 hash 不回写。 **最新用户纠正**:保留原 `PlayFabUserService`、`PlayFabMgr` 和 PlayFab SDK 路线,新增独立 KV 实现,由启动开关选择;先前“最终删除旧类”的表述已撤销。应在继续大批业务调用迁移前完整评审[双提供方切换与独立 KV 实现约束](M2-双提供方用户服务切换与KV独立实现约束-2026-09-29.md)。这与 `PlayerKV*` **完整移植后另批改名**是两项不同工作。正式地址、账号准入、阶段闸与服务器边界均不变。