Oops Framework登录流程全解:Cocos Creator 3.x事件驱动的服务器连接与角色数据加载实战
2026/8/23 13:32:49 网站建设 项目流程

Oops Framework登录流程全解:Cocos Creator 3.x事件驱动的服务器连接与角色数据加载实战

【免费下载链接】oops-framework基于 Cocos Creator 3.x 版本开发的游戏框架,此项目为 Oops Framework 教程项目,如果使用框架制作游戏项目可下载 oops-game-kit 游戏项目模板开发。项目地址: https://gitcode.com/gh_mirrors/oo/oops-framework

Oops Framework是一个基于 Cocos Creator 3.x 开发的游戏框架,本教程项目带你完整看懂它的登录流程:如何通过事件驱动方式连接服务器、拉取角色数据并绑定到界面。全文以项目源码为蓝本,拆解「初始化 → 连接服务器 → 请求玩家数据 → 创建角色 → 登录成功」这条完整链路,帮助新手快速掌握 Cocos Creator 3.x 中事件驱动的服务器连接与角色数据加载实战写法。

🗺️ 登录流程全景:一张图看懂事件驱动链路

整个登录流程由 4 个关键节点串联,节点之间不互相调用,而是通过oops.message全局事件总线解耦:

Initialize 初始化GameServerConnected(服务器连接成功事件)→Account 请求玩家数据Role 创建角色并绑定界面LoginSuccess(登录成功事件)

这种"事件驱动 + ECS 组件"的设计,让账号模块、角色模块、界面模块各自独立,想替换网络库或增加断线重连,都不必改动其他模块。下面按执行顺序逐步拆解。

🚀 第一步:游戏初始化与资源加载

游戏入口是 Main.ts,它继承框架的Root类,负责初始化 UI 配置并挂载 ECS 系统:

  • 注册初始化实体:Initialize.ts 中,初始化模块会创建Account 账号实体作为自己的子实体,并添加InitResComp组件触发资源加载;
  • 资源加载:InitRes.ts 使用框架自带的AsyncQueue异步队列,按顺序加载多语言包 → 加载公共目录资源 → 打开 Loading 界面,完成后移除自身组件;
  • Loading 界面:LoadingViewComp.ts 监听LoginSuccess事件,收到后关闭 Loading 并打开游戏主界面UIID.Demo

🔌 第二步:连接游戏服务器(事件驱动的关键)

账号模块入口是 Account.ts,它是一个 ECS 实体,挂载了两个组件:

  • AccountModelComp.ts:账号数据层,保存货币等账号信息和角色对象引用;
  • 事件监听:init()中通过oops.message.on(GameEvent.GameServerConnected, ...)监听"服务器连接成功"事件。

connect()方法负责发起服务器连接。教程项目里为了支持无网状态测试,直接用oops.message.dispatchEvent(GameEvent.GameServerConnected)模拟连接成功——这就是事件驱动的核心:连接层只管发事件,后续流程全由监听者自动接管。事件名统一定义在 GameEvent.ts 中,方便全局检索。

📡 第三步:ECS 组件驱动的角色数据请求

收到GameServerConnected事件后,Account.onHandler调用getPlayer(),做法只有一个动作:给实体添加AccountNetDataComp组件

真正的网络请求逻辑写在 AccountNetData.ts 的AccountNetDataSystemComblockSystem)中:

  • 通过filter()匹配"同时拥有AccountNetDataCompAccountModelComp"的实体;
  • entityEnter中定义onComplete回调,收到服务器返回的玩家数据后依次执行:
    1. setLocalStorage:用oops.storage.setUser(uid)保存用户标识,下次登录免输账号;
    2. createRole:创建并填充角色对象;
    3. 派发LoginSuccess事件通知全游戏登录完成。

教程项目里有一段离线测试代码,直接构造了模拟玩家数据(id/name/power/agile/lv/jobId)后调用回调——没有服务器也能跑通完整流程,非常适合新手阅读。

🎮 第四步:角色数据加载与界面绑定

createRole是登录流程的落点,它拿到全局单例角色实体 Role.ts 并填充数据:

role.RoleModel.id / name // 角色基础数据 role.RoleModelBase.power等 // 初始战斗属性(力量/敏捷/体质) role.upgrade(data.lv) // 等级数据(ECS System 处理升级逻辑) role.RoleModelJob.id // 职业数据

关键在于MVVM 自动绑定role.RoleModel.vmAdd()role.RoleModelLevel.vmAdd()role.RoleModelBase.vmAdd()三行代码就把数据变化绑定到界面显示,之后数据一变,UI 自动刷新,无需手动更新界面。最后role.load(oops.gui.game, v3(0, -300, 0))加载角色动画显示对象到场景。

🧩 事件如何闭环:LoginSuccess 之后的事情

LoginSuccess事件被 LoadingViewComp.ts 监听,收到后执行收尾工作:关闭 Loading 界面 → 打开游戏主界面(Demo),登录流程至此完整闭环。

📁 登录流程相关文件清单

环节文件职责
入口Main.tsUI 配置初始化、ECS 系统挂载
初始化Initialize.ts创建 Account 实体、触发资源加载
资源加载InitRes.ts异步队列加载语言包与公共资源
LoadingLoadingViewComp.ts监听 LoginSuccess、切换主界面
账号Account.ts连接服务器、监听连接成功事件
数据请求AccountNetData.ts请求玩家数据、创建角色
事件定义GameEvent.ts全局游戏事件枚举
角色Role.ts角色数据层/业务层/视图层

✅ 总结:这套登录流程值得你抄的设计

  1. 事件驱动解耦connect()不关心登录后续,只发GameServerConnected事件;后续全部由监听者接管,加断线重连只需多监听一个事件;
  2. ECS 组件即任务:添加组件 = 派发任务,System 统一处理,逻辑可插拔;
  3. MVVM 自动绑定vmAdd()让数据到界面的同步零成本,角色升级、转职后 UI 自动刷新;
  4. 离线可测试:模拟数据直接走通回调,无服务器也能开发界面。

如果你想体验完整流程,可以直接运行本教程项目,或克隆仓库后用 Cocos Creator 3.x 打开:

git clone https://gitcode.com/gh_mirrors/oo/oops-framework

【免费下载链接】oops-framework基于 Cocos Creator 3.x 版本开发的游戏框架,此项目为 Oops Framework 教程项目,如果使用框架制作游戏项目可下载 oops-game-kit 游戏项目模板开发。项目地址: https://gitcode.com/gh_mirrors/oo/oops-framework

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询