做实体店打折信息网站外贸信息发布平台
项目核心思路
该项目实现了一个完整的游戏账号流程:
用户侧流程:新用户注册 -> 返回登录 -> 输入账号密码 -> 选择游戏服务器 -> 进入游戏。
数据管理:所有数据(账号信息、服务器列表、用户选择)都通过 XML 进行本地持久化存储和读取,实现了“记住密码”、“自动登录”等功能。
UI 管理:采用单例模式和基类继承的方式管理各个 UI 面板,使得面板的显示、隐藏和逻辑调用清晰且高效。
流程图

流程分析
1. 数据模型层 (Model)
LoginData(登录数据)
作用:存储与用户登录相关的数据
重要字段:
userName,password: 账号密码。frontServerID: 记录用户上次登录的服务器ID,是实现“上次登录”功能的关键。rememberPW,autoLogin: 布尔值,控制是否记住密码和自动登录。
RegisterData(注册数据)
作用:存储所有已注册的账户信息。
重要字段:
registerInfo: 一个序列化字典,键值对为<用户名, 密码>。这是验证登录信息的基础数据库。
ServerInfo& Server(服务器信息)
作用:定义服务器列表和单个服务器的数据结构。
重要字段 (
Server类):id: 服务器唯一标识。name: 服务器名称(如“王者之巅”)。state: 服务器状态(0:正常,1:流畅,2:火爆,3:维护等),用于在UI上显示不同图标。isNew: 是否为新区,用于显示“新”标识。
2. 数据管理层 (Manager)
这个类是整个系统的核心大脑,负责处理所有业务逻辑和数据存取。
LoginMgr(登录管理器)
作用:单例类,统筹管理登录、注册、服务器数据的所有操作。
核心功能:
初始化:在构造函数中从XML加载所有数据(
LoginData,RegisterData,ServerInfo)。数据存取:提供
SaveLoginData()和SaveRegisterData()方法,将内存中的数据保存回XML文件。注册验证:
RegisterUser()方法检查用户名是否已存在,不存在则添加到注册数据中。登录验证:
CheckInfo()方法比对输入的用户名密码是否与注册数据匹配。数据提供:通过属性(如
LoginData)向UI层提供数据。
3. UI 基础层
BasePanel<T>(UI面板基类)
提供了一个所有UI面板的基类,简化了面板管理
作用:泛型单例基类。所有其他UI面板都继承自它。
核心功能:
Instance: 提供全局唯一的访问点。ShowMe(),HideMe(): 默认实现显示和隐藏GameObject。Init(): 抽象方法,强制子类实现初始化逻辑(如按钮事件绑定)。
4. UI 表现层 (View)
这些是具体的UI界面,继承自 BasePanel<T>,负责界面展示和用户交互
LoginPanel(登录面板)
作用:用户输入账号密码的界面。
核心功能:
输入框和按钮的事件绑定。
初始化时,根据保存的
LoginData自动填充账号密码。点击登录按钮时,调用
LoginMgr.Instance.CheckInfo()进行验证。根据
autoLogin标志,自动尝试登录。验证成功后,根据
frontServerID决定是直接进入游戏(ServerPanel)还是需要选择服务器(ChooseServerPanel)。
RegisterPanel(注册面板)
作用:新用户注册账号的界面。
核心功能:
输入用户名和密码(要求大于6位)。
调用
LoginMgr.Instance.RegisterUser()完成注册。注册成功后,自动填充登录面板并清空上次的服务器记录(
ClearLoginData)。
ChooseServerPanel(选择服务器面板)
作用:让用户从所有服务器中选择一个的界面。通常分为左侧服务器组列表和右侧具体服务器列表。
核心功能:
Init(): 根据服务器总数,动态生成左侧的服务器组按钮(如“1-5区”、“6-10区”)。UpdatePanel(): 当点击左侧组按钮时,动态生成该组内的所有服务器按钮到右侧。ShowMe(): 显示时,更新顶部显示的“最近登录的服务器”信息。
ServerPanel(服务器面板)
作用:显示当前选定的服务器,并提供“进入游戏”的最终入口。
核心功能:
显示已选服务器的名称。
“进入游戏”按钮调用
SceneManager.LoadScene("GameScene"),正式进入游戏场景。提供“切换服务器”按钮返回到
ChooseServerPanel。
TipPanel(提示面板)
作用:一个通用的弹窗,用于显示操作结果(如“密码错误”、“注册成功”等)。
核心功能:
ChangeInfo(): 动态改变提示信息。通常只有一个“确定”按钮用于关闭自己。
5. UI 组件层
这些是动态生成的UI列表项,用于构建更复杂的UI界面。
ServerItem(服务器组项)
作用:代表
ChooseServerPanel左侧列表中的一个组(如“1-5区”按钮)。功能:点击后,通知
ChooseServerPanel更新右侧列表。
ServerChooseItem(服务器选择项)
作用:代表
ChooseServerPanel右侧列表中的一个具体服务器按钮。功能:
根据
Server数据初始化显示(服务器名、状态图标、是否新区)。点击后,将它的服务器ID保存到
LoginData.frontServerID,并打开ServerPanel。
