- 删除 01~05 旧中文教程目录 - 将 03 核心功能教程拆分为各 framework 模块的子文档 - 06 工具脚本移入 modules/frameworks/编辑器工具/UI工具/ - 非框架内容合并进 rules/20-开发规则.md 与 rules/40-工作流清单.md - 更新所有交叉链接与文档关联表 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.9 KiB
5.9 KiB
登录
分类
- 项目功能
目的
记录登录流程、登录窗口、网络交互和进入游戏后的衔接关系。
关键文件
| 用途 | 路径 | 说明 |
|---|---|---|
| 登录管理器 | Assets/Game/GameHFScripte/GameFunction/Logic/Login/HFLoginManager.cs |
单例,负责连接服务器、发送登录协议、处理登录后事件链 |
| 登录窗口 | Assets/Game/GameHFScripte/GameFunction/UIWindows/Login/LoginWindow.cs |
继承 AbsHFUIWindow,绑定输入框和登录按钮 |
| 登录 Prefab | Assets/Game/GameHFResource/UIWindows/Login/LoginWindow.prefab |
窗口资源,由 HFAssetBundlePath 指定 |
| 启动入口 | Assets/Game/GameHFScripte/GameFunction/GameRoot/HFGameStart.cs(待确认) |
初始化 manager 并打开 LoginWindow |
数据流
[启动]
HFGameStart.InitManager
-> OpenWindow<LoginWindow>
[用户点击]
LoginWindow.OnBtnLogin
-> 校验用户名非空
-> PlayerPrefs 保存用户名/密码
-> HFLoginManager.Instance.Login(InputName.text)
[连接服务器]
HFLoginManager.Login(account)
-> UNITY_EDITOR 下读取 EditorPrefs["IPData"] 覆盖 IP
-> HFSeverManager.ReConnect(OnReConnect)
-> HFSeverManager.Connect(MainConnect, WebSocket, m_IP, m_Port, m_Token, callback)
-> 连接成功后 OnSendLogin
[登录协议]
OnSendLogin
-> LoginAuthC2S
ServerId = 10001
Token = m_Token
Pid = "2126001"
UserName = m_Account
Password = m_Account
[服务端响应链]
LoginAuthS2C (ErrorCode == 0)
-> PlayerSelectC2S
-> PlayerSelectS2C
有角色:PlayerEnterC2S
无角色:PlayerCreateC2S -> PlayerEnterC2S
-> PlayerEnterS2C
-> PlayerFlushC2S(All = true)
-> RequestLoginData 触发后续背包、资源等初始化
关键协议
LoginAuthC2S/LoginAuthS2CPlayerSelectC2S/PlayerSelectS2CPlayerCreateC2S/PlayerCreateS2CPlayerEnterC2S/PlayerEnterS2CPlayerFlushC2S/PlayerFlushS2CChangeNicknameC2S/ChangeNicknameS2C
已确认流程
当前登录入口:
HFGameStart.InitManager
-> OpenWindow<LoginWindow>
-> LoginWindow.OnBtnLogin
-> HFLoginManager.Login(InputName.text)
HFLoginManager.Login 流程:
Login(account)
-> 读取 EditorPrefs["IPData"] 覆盖 IP(仅 UNITY_EDITOR)
-> ConnectServer
-> HFSeverManager.ReConnect(OnReConnect)
-> HFSeverManager.Connect(MainConnect, WebSocket, m_IP, m_Port, m_Token)
-> OnSendLogin
-> LoginAuthC2S.Dispatch
服务端事件链:
LoginAuthS2C
-> PlayerSelectC2S
-> PlayerSelectS2C
-> 有角色:PlayerEnterC2S
-> 无角色:PlayerCreateC2S -> PlayerEnterC2S
-> PlayerEnterS2C
-> PlayerFlushC2S(All = true)
LoginWindow 会把用户名和密码写入 PlayerPrefs,但实际登录请求当前使用用户名作为 account,密码未参与 LoginAuthC2S。
梳理任务
- 找到登录功能的入口方法和首个调用点。
- 梳理登录请求、响应和错误处理。
- 梳理登录成功后初始化了哪些 manager。
- 梳理登录窗口 prefab 和脚本绑定关系。
- 确认登录完成后进入主界面或 PVE 的流程。
待确认
- 登录是否区分游客、账号、平台登录。
- 登录数据是否会初始化背包、关卡、角色/塔数据。
- 是否存在断线重连或重新登录流程。
PlayerFlushS2C收到后由谁打开主界面,目前未确认。- 密码输入框当前只保存到
PlayerPrefs,是否应参与登录待确认。
相关框架
文档关联
注意:当本模块发生变更时,应同步检查以下关联文档,避免信息不一致。
关联模块
| 模块 | 文档 | 关联原因 |
|---|---|---|
| 背包 | 背包 | 登录成功后 RequestLoginData 触发背包初始化 |
| 奖励/道具展示 | 奖励/道具展示 | 登录流程涉及资源、道具配置 |
| GM/调试功能 | GM/调试功能 | HFLoginManager 在 Editor 下读取 EditorPrefs["IPData"] 覆盖 IP |
| PVE/关卡战斗 | PVE/关卡战斗 | 登录后进入主界面或 PVE 的流程衔接 |
| 地图/关卡进度 | 地图/关卡进度 | 登录后角色数据与关卡进度同步 |
关联框架文档
| 框架 | 文档 | 关联原因 |
|---|---|---|
| 网络框架 | 网络框架 | 登录协议(LoginAuthC2S/S2C、PlayerEnterS2C 等) |
| UI 框架 | UI 框架 | LoginWindow 继承 AbsHFUIWindow |
| Hotfix 启动/目录 | Hotfix 启动/目录 | HFGameStart.InitManager 为入口 |
| 事件框架 | 事件框架 | RequestLoginData 触发后续初始化事件链 |
| 场景框架 | 场景框架 | 登录后进入主界面涉及场景切换 |
关联规则
| 规则 | 文档 | 关联原因 |
|---|---|---|
| 模块登记规则 | 30-模块登记规则.md | 登录模块登记与状态 |
| 归档规则 | 50-归档规则.md | 变更后需同步归档相关文档 |
| 架构说明 | 10-架构说明.md | 登录为游戏入口,涉及整体架构 |
| 开发规则 | 20-开发规则.md | 网络协议、UI 窗口开发规范 |
关联 Spec / OpenSpec
| Spec | 文档 | 关联原因 |
|---|---|---|
| 规则工作流 Spec | 2026-06-11-rules-workflow-v1.md | 项目文档和规则系统建立 |