[docs][refactor]: 将旧 01~06 中文教程合并整理为 modules/frameworks 文件夹结构
- 删除 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>
This commit is contained in:
167
business-reference/playballoons/features/登录.md
Normal file
167
business-reference/playballoons/features/登录.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# 登录
|
||||
|
||||
## 分类
|
||||
|
||||
- 项目功能
|
||||
|
||||
## 目的
|
||||
|
||||
记录登录流程、登录窗口、网络交互和进入游戏后的衔接关系。
|
||||
|
||||
## 关键文件
|
||||
|
||||
| 用途 | 路径 | 说明 |
|
||||
|---|---|---|
|
||||
| 登录管理器 | `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` |
|
||||
|
||||
## 数据流
|
||||
|
||||
```text
|
||||
[启动]
|
||||
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` / `LoginAuthS2C`
|
||||
- `PlayerSelectC2S` / `PlayerSelectS2C`
|
||||
- `PlayerCreateC2S` / `PlayerCreateS2C`
|
||||
- `PlayerEnterC2S` / `PlayerEnterS2C`
|
||||
- `PlayerFlushC2S` / `PlayerFlushS2C`
|
||||
- `ChangeNicknameC2S` / `ChangeNicknameS2C`
|
||||
|
||||
## 已确认流程
|
||||
|
||||
当前登录入口:
|
||||
|
||||
```text
|
||||
HFGameStart.InitManager
|
||||
-> OpenWindow<LoginWindow>
|
||||
-> LoginWindow.OnBtnLogin
|
||||
-> HFLoginManager.Login(InputName.text)
|
||||
```
|
||||
|
||||
`HFLoginManager.Login` 流程:
|
||||
|
||||
```text
|
||||
Login(account)
|
||||
-> 读取 EditorPrefs["IPData"] 覆盖 IP(仅 UNITY_EDITOR)
|
||||
-> ConnectServer
|
||||
-> HFSeverManager.ReConnect(OnReConnect)
|
||||
-> HFSeverManager.Connect(MainConnect, WebSocket, m_IP, m_Port, m_Token)
|
||||
-> OnSendLogin
|
||||
-> LoginAuthC2S.Dispatch
|
||||
```
|
||||
|
||||
服务端事件链:
|
||||
|
||||
```text
|
||||
LoginAuthS2C
|
||||
-> PlayerSelectC2S
|
||||
-> PlayerSelectS2C
|
||||
-> 有角色:PlayerEnterC2S
|
||||
-> 无角色:PlayerCreateC2S -> PlayerEnterC2S
|
||||
-> PlayerEnterS2C
|
||||
-> PlayerFlushC2S(All = true)
|
||||
```
|
||||
|
||||
`LoginWindow` 会把用户名和密码写入 `PlayerPrefs`,但实际登录请求当前使用用户名作为 account,密码未参与 `LoginAuthC2S`。
|
||||
|
||||
## 梳理任务
|
||||
|
||||
- [x] 找到登录功能的入口方法和首个调用点。
|
||||
- [x] 梳理登录请求、响应和错误处理。
|
||||
- [x] 梳理登录成功后初始化了哪些 manager。
|
||||
- [x] 梳理登录窗口 prefab 和脚本绑定关系。
|
||||
- [ ] 确认登录完成后进入主界面或 PVE 的流程。
|
||||
|
||||
## 待确认
|
||||
|
||||
- 登录是否区分游客、账号、平台登录。
|
||||
- 登录数据是否会初始化背包、关卡、角色/塔数据。
|
||||
- 是否存在断线重连或重新登录流程。
|
||||
- `PlayerFlushS2C` 收到后由谁打开主界面,目前未确认。
|
||||
- 密码输入框当前只保存到 `PlayerPrefs`,是否应参与登录待确认。
|
||||
|
||||
## 相关框架
|
||||
|
||||
- [网络框架](../../../modules/frameworks/网络系统.md)
|
||||
- [UI 框架](../../../modules/frameworks/UI窗口系统/README.md)
|
||||
- [Hotfix 启动/目录](../../../modules/frameworks/Hotfix启动.md)
|
||||
|
||||
---
|
||||
|
||||
## 文档关联
|
||||
|
||||
> **注意**:当本模块发生变更时,应同步检查以下关联文档,避免信息不一致。
|
||||
|
||||
### 关联模块
|
||||
|
||||
| 模块 | 文档 | 关联原因 |
|
||||
|---|---|---|
|
||||
| 背包 | [背包](背包.md) | 登录成功后 `RequestLoginData` 触发背包初始化 |
|
||||
| 奖励/道具展示 | [奖励/道具展示](奖励道具.md) | 登录流程涉及资源、道具配置 |
|
||||
| GM/调试功能 | [GM/调试功能](GM调试.md) | `HFLoginManager` 在 Editor 下读取 `EditorPrefs["IPData"]` 覆盖 IP |
|
||||
| PVE/关卡战斗 | [PVE/关卡战斗](PVE关卡战斗.md) | 登录后进入主界面或 PVE 的流程衔接 |
|
||||
| 地图/关卡进度 | [地图/关卡进度](地图进度.md) | 登录后角色数据与关卡进度同步 |
|
||||
|
||||
### 关联框架文档
|
||||
|
||||
| 框架 | 文档 | 关联原因 |
|
||||
|---|---|---|
|
||||
| 网络框架 | [网络框架](../../../modules/frameworks/网络系统.md) | 登录协议(`LoginAuthC2S/S2C`、`PlayerEnterS2C` 等) |
|
||||
| UI 框架 | [UI 框架](../../../modules/frameworks/UI窗口系统/README.md) | `LoginWindow` 继承 `AbsHFUIWindow` |
|
||||
| Hotfix 启动/目录 | [Hotfix 启动/目录](../../../modules/frameworks/Hotfix启动.md) | `HFGameStart.InitManager` 为入口 |
|
||||
| 事件框架 | [事件框架](../../../modules/frameworks/事件系统/README.md) | `RequestLoginData` 触发后续初始化事件链 |
|
||||
| 场景框架 | [场景框架](../../../modules/frameworks/场景系统.md) | 登录后进入主界面涉及场景切换 |
|
||||
|
||||
### 关联规则
|
||||
|
||||
| 规则 | 文档 | 关联原因 |
|
||||
|---|---|---|
|
||||
| 模块登记规则 | [30-模块登记规则.md](../../../rules/30-模块登记规则.md) | 登录模块登记与状态 |
|
||||
| 归档规则 | [50-归档规则.md](../../../rules/50-归档规则.md) | 变更后需同步归档相关文档 |
|
||||
| 架构说明 | [10-架构说明.md](../../../rules/10-架构说明.md) | 登录为游戏入口,涉及整体架构 |
|
||||
| 开发规则 | [20-开发规则.md](../../../rules/20-开发规则.md) | 网络协议、UI 窗口开发规范 |
|
||||
|
||||
### 关联 Spec / OpenSpec
|
||||
|
||||
| Spec | 文档 | 关联原因 |
|
||||
|---|---|---|
|
||||
| 规则工作流 Spec | [2026-06-11-rules-workflow-v1.md](../../../specs/Spec索引.md) | 项目文档和规则系统建立 |
|
||||
Reference in New Issue
Block a user