Files
2026-07-10 17:50:20 +08:00

5.7 KiB
Raw Permalink Blame History

登录

分类

  • 项目功能

目的

记录登录流程、登录窗口、网络交互和进入游戏后的衔接关系。

关键文件

用途 路径 说明
登录管理器 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 / LoginAuthS2C
  • PlayerSelectC2S / PlayerSelectS2C
  • PlayerCreateC2S / PlayerCreateS2C
  • PlayerEnterC2S / PlayerEnterS2C
  • PlayerFlushC2S / PlayerFlushS2C
  • ChangeNicknameC2S / 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/S2CPlayerEnterS2C 等)
UI 框架 UI 框架 LoginWindow 继承 AbsHFUIWindow
Hotfix 启动/目录 Hotfix 启动/目录 HFGameStart.InitManager 为入口
事件框架 事件框架 RequestLoginData 触发后续初始化事件链
场景框架 场景框架 登录后进入主界面涉及场景切换

关联规则

规则 文档 关联原因
模块登记规则 30-模块登记规则.md 登录模块登记与状态
文档同步规则 50-文档同步规则.md 长期接口或流程变化时同步模块文档
架构说明 10-架构说明.md 登录为游戏入口,涉及整体架构
开发规则 20-开发规则.md 网络协议、UI 窗口开发规范