oops-framework框架 之 初始了解(一)

news2025/1/13 11:43:06

引擎:CocosCreator

环境: Mac

Gitee: oops-framework


简介


oops-framework是由作者dgflash编写,基于CocosCreator 3.x而实现的开源框架。

该框架以插件形式存在,主要目的是为了降低与项目的耦合,并且通过插件内部的命令快速的获取最新版本。

该框架的特性有:

  • 提供游戏常用的功能库,提高开发效率
  • 提供业务模块代码模版,降低程序设计难度
  • 内置模块低耦合,可根据需要自行删减,以适应不同的类型
  • 提供了常用的插件工具,支持Excel表转Json、支持热更新、AB包
  • 增加了ECS、MVVM框架相关,以及常用的屏幕适配,UI管理,多语言等等

为了方便大家更好的学习和使用该框架,作者很贴心的准备了一些学习资料:

dgflash-视频教程

dgflash CSDN博客

dgflash-cocos论坛

通过视频、博客、论坛相关可以了解框架,作者提供的Git仓库如下:
请添加图片描述

  • oops-framework 框架实现的教程项目,可用于学习和研究
  • oops-game-kit 框架提供的模版,可用于开发游戏
  • oops-plugin-framework 基础框架的插件,必备
  • oops-plugin-excel-to-json Excel转Json的框架插件,可选
  • oops-pugin-bundle AB包框架插件,可选

我们可以自己造轮子,享受代码的成就感。但学习理解他人所分享的,对于个人的提升还是很有帮助的。

学习该框架的前提是:了解cocosCreator及常用组件的使用,如果尚未入门,不推荐现在学习该框架。

在这里,感谢作者对 oops-framework的分享,我会将从框架中学习到的一些东西,以文章的形式分享出来,如果编写不当,欢迎您的指出,感谢!


框架使用


作者分享了两个工程:

  • oops-framework 通过框架实现的一些项目示例,可用于学习和了解框架的功能
  • oops-gamekit 通过框架构建的开发模版,相当于空项目,可用于研究和使用框架开发

两者的的安装和使用是类似的,以oops-framework 为例:

注: 下载项目完成后,千万不要直接导入CocosCreator编译器并打开,会有报错的。

  1. 使用Git命令下载所需要的项目(任选之一即可)
git clone https://gitee.com/dgflash/oops-framework
git clone https://gitee.com/dgflash/oops-game-kit
  1. 下载成功后,进入项目目录,执行update-oops-plugin-framework的命令,下载框架插件:
// windows执行.bat命令, mac执行.sh命令, 以Mac为例:
./update-oops-plugin-framework.sh 

// 如果命令提示错误,类似如下:
// -bash: ./update-oops-plugin-bundle: No such file or directory
// 可以增加 sudo ,它会提示你输入登录密码
sudo ./update-oops-plugin-framework.sh 

// 如果使用sudo后,报错:command not found,那就再运行下命令
chmod u+x update-oops-plugin-framework.sh
sudo ./update-oops-plugin-framework.sh

注:框架以插件的形式存在,所以命令执行完毕后,会保存到 extensions 目录下

  1. 其他框架插件:热更新,Excel转Json相关,跟步骤2是类似的
// AB包
sudo ./update-oops-plugin-bundle.sh
// Excel转Json
sudo ./update-oops-plugin-excel-to-json.sh
// 热更新
sudo ./update-oops-plugin-hot-update.sh
  1. 打开CocosCreator编译器,导入项目打开, 资源管理器中的 oops-framework 便是通过项目目录内的命令下载下来的
    请添加图片描述

  2. 选择assets 目录下的 main.scene 打开,并运行,可查看效果:
    请添加图片描述

到这里就可以学习和使用了。


框架结构


框架以插件的形式存在,在Cocos的官方商店里搜索 oops 也可以进行下载使用的。

了解一个框架的使用,我们需要熟悉它的结构:
请添加图片描述

大致分为三块:

  • core 框架核心技术库相关
  • libs 框架可选技术库相关
  • moudule 通用模块相关

注:基础框架的大小不到2M,libs相关为低耦合,如果不需要,也可以剔除,用于降低包体大小。

目录说明

core

common 公共模块相关

audio 音频模块

event 全局事件

loader 资源管理相关

log 日志模块

random 随机管理

storage 本地存储

timer 定时器相关

game 游戏世界类

gui 游戏界面类

layer 多层界面、窗口管理

prompt 公共提示窗口

utils 各类工具

Oop.ts 框架功能访问接口

Root.ts 框架视图层根节点管理组件

libs 框架中可选技术库

animator 可视化动画状态机

animator-effect 动画特效组件

animator-move 动画移动组件

behavior-tree 行为树框架

camera 摄像机控制组件

collection 数据集合处理

ecs ECS框架

gui 界面组件, 比如:红点提示、按钮、标签、多语言等组件

model-view MVVM框架

network 网络模块, 支持Http, WebSocket的请求相关,支持Protobuf

render-texture 渲染纹理组件, 可用于三维模型显示到二维精灵等

module 游戏通用模块

common 公共模块

config 配置模块

主要文件:

基础相关:

  • LayerManager.ts UI界面管理, 可用于显示不同的UI页面相关
  • ResLoader.ts 资源管理相关, 可用于resources及其他bundle的加载
  • TimerManager.ts 时间管理相关,可用于时间的显示及定时器相关
  • AudioManager.ts 声音管理相关,可用于音乐音效的播放
  • MessageManager.ts 可用于消息的注册和监听相关
  • GUI.ts 可用于屏幕匹配相关
  • StorageManager.ts 本地存储,支持AES数据加密

组件相关:

  • libs/gui/button 按钮相关, 支持点击效果,防连点和长按点击等
  • libs/gui/language 多语言相关, 支持Label, Sprite, Spine等
  • libs/model-view MVVM组件库相关
  • libs/animator-effect 特效管理相关,比如流光效果等

网络相关

  • libs/network/HttpRequest.ts Http请求相关
  • libs/network/NetManager.ts webSocket请求相关

工具相关

  • Logger.ts 日志管理,支持网络层,业务,视图,配置等日志的显示
  • RandomManager.ts 随机管理器,支持指定范围内的随机数显示
  • core/utils 工具相关,比如:数学运算、字符串、正则、加密、Json加载等
  • libs/network/protocol zip压缩相关

其他


屏幕适配

使用框架及oops-gamekit 开发项目,设置屏幕适配的话,直接通过 项目 -> 项目设置 设置即可

  • 横屏自适应
    请添加图片描述

  • 竖屏自适应
    请添加图片描述

设置以后, 框架会通过GUI.ts自动处理屏幕适配相关。


项目名称和描述

从Git克隆 oops-gamekit 以后,注意通过项目目录内的package.json, 修改下 namedescription, 对项目名和描述重新命名

{
  "_sourceId": "c30b28da-749e-479b-bcb6-cecd8d7be9e3",
  "creator": {
    "version": "3.8.1"
  },
  "dependencies": {
    "crypto-es": "^1.2.7"
  },
  // 项目描述
  "description": "游戏项目模板",
  // 项目名
  "name": "oops-game-kit",
  "uuid": "00d7d957-a3e8-4ad6-80f4-2fcfb235bca4",
  "version": "3.6.3"
}

模版文件

框架提供了项目模版文件,可在创建脚本的时候使用,主要有:

// .../.creator/asset-templete/typeScript
Module.ts
ModuleBll.ts		// 业务层对象
ModuleModel.ts	// 数据层对象
ModuleTable.ts	// Excel表导出的Json数据相关
ModuleView.ts 	// 视图层对象
ModuleViewVM.ts // MVVM的视图层对象

建议

刚刚学习该框架的小伙伴,可以重点示例项目下的几个文件:

// assets/script/game/initialize/bll/InitRes.ts
// 主要用于项目启动时加载必备的资源,注意:要控制资源的大小,避免加载导致黑屏时间过长
entityEnter(e: Initialize): void {
  var queue: AsyncQueue = new AsyncQueue();

  // 加载自定义资源
  this.loadCustom(queue);
  // 加载多语言包
  this.loadLanguage(queue);
  // 加载公共资源
  this.loadCommon(queue);
  // 加载游戏内容加载进度提示界面
  this.onComplete(queue, e);

  queue.play();
}

// assets/script/game/initialize/view/LoadingViewComp.ts
// 资源加载进度条,在加载结束后,会通过如下进入设定的主页面
reset(): void {
  setTimeout(() => {
  	// 关闭加载界面
  	oops.gui.remove(UIID.Loading);

		// 打开游戏主界面(自定义逻辑)
		oops.gui.open(UIID.Demo);
	}, 500);
}

// assets/script/game/initialize/view/HotUpdate.ts
// 热更新相关, 配置文件在resources目录下,分别为`project.manifest`和`version.mainifest`

再次感谢作者dgflash的分享,oops-framework框架QQ群: 628575875。
最后,祝大家学习生活愉快,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275945.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码】基于麻雀搜索优化Kmeans图像分割算法

程序名称:基于麻雀搜索优化Kmeans图像分割算法 实现平台:matlab 代码简介:首先使用麻雀搜索优化算法来确定 K-means 算法的初始质心位置,然后进行传统的 K-means 聚类。这样做的目的是为了避免 K-means 算法陷入局部最优解&…

Mybatis 的操作(续集)

Mybatis 是一款优秀的 持久性 框架,用于简化 JDBC 的开发 持久层 : 指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的 简单来说 Mybatis 是更简单完成程序和数据库交互的框架 Mybatis 的写法有两种 : 1.xml 2.注解 这两者各有利弊,后面进行总结 Mybati…

HTML5 的全局属性 hidden 和 display:none 的关系

目录 1,hidden 和 display:none 的关系2,其他隐藏元素的方式2.1,语意上的隐藏2.2,视觉上的隐藏 1,hidden 和 display:none 的关系 hidden - MDN 参考 一句话总结:hidden 是HTML5 新增的全局布尔属性&…

播放器开发(七):音视频同步实现

目录 学习课题:逐步构建开发播放器【QT5 FFmpeg6 SDL2】 原理 简单分析: 下图简单描述了在一个播放过程中,假设我们先播放音频,对比一个公共时间轴,视频就会始终比音频慢0.003s。 我们在日常中用一些播放器播放视频…

Oracle:左连接、右连接、全外连接、(+)号详解

目录 Oracle 左连接、右连接、全外连接、()号详解 1、左外连接(LEFT OUTER JOIN/ LEFT JOIN) 2、右外连接(RIGHT OUTER JOIN/RIGHT JOIN) 3、全外连接(FULL OUTER JOIN/FULL JOIN&#xff0…

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数,用于在图像周围添加边框(padding)。这个函数可以用于图…

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

iOS Class Guard是一个用于OC类、协议、属性和方法名混淆的命令行工具。它是class-dump的扩展。这个工具会生成一个symbol table,这个table在编译期间会包含进工程中。iOS-Class-Guard能有效的隐藏绝大多数的类、协议、方法、属性和 实例变量 名。iOS-Class-Guard不…

Eclipse导入JavaWeb项目

Eclipse 导入JavaWeb项目教程 运行教程 亲爱的粉丝们,我深知你们对Eclipse导入Web项目教程的迫切需求。在这个充满竞争的时代,每一个项目都离不开高效的沟通。过程中需要对应的环境适配和软件安…

淘宝/天猫商品详情API接口丨京东商品详情丨1688商品详情丨接口key密钥获取方式

要获取淘宝/天猫商品详情API接口、京东商品详情API接口、1688商品详情API接口以及接口密钥(Key),可以按照以下步骤进行操作: 注册并登录淘宝/天猫开发者中心或京东开放平台或1688开放平台,并创建应用。在创建应用的过…

cmake和vscode 下的cmake的使用详解(二)

第四讲: GDB 调试器 前言: GDB(GNU Debugger) 是一个用来 调试 C/C 程序 的功能强大的 调试器 ,是 Linux 系统开发 C/C 最常用的调试器 程序员可以 使用 GDB 来跟踪程序中的错误 ,从而减少程序员的工作量。 Linux 开发 C/C …

postgresql从入门到精通教程 - 第36讲:postgresql逻辑备份

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第36讲&#…

分布式系统中最基础的 CAP 理论及其应用

对于开发或设计分布式系统的架构师、工程师来说,CAP 是必须要掌握的基础理论,CAP 理论可以帮助架构师对系统设计中目标进行取舍,合理地规划系统拆分的维度。下面我们先讲讲分布式系统的特点。 分布式系统的特点 随着移动互联网的快速发展&a…

vue使用皮肤框架element-plus,element-ui是vue2.0的皮肤

vue使用皮肤框架element-plus,element-ui是vue2.0的皮肤,所以现在最新的vue3要使用element-plus皮肤。使用命令行安装element-plus: npm install element-plus安装后: {"name": "vue01","private": true,&quo…

Java连接数据库

数据库 存储数据:集中管理 目的: 文件中的数据能够放在数据库中集中管理 管理方法:一个项目一个库,每个库中包含最小化数据的表 开发: 节省存储空间,节省运行空间,采用数据库,架…

windows判断exe应用程序是否在使用的bat脚本

脚本 REM 查询进程是否存在 tasklist|findstr /i "mysqld.exe">nul &&echo y >2.log ||echo n >2.log REM 读取文本内容赋值给变量 set /P resu<2.log if %resu% y (echo process in use ) else (echo process not in use )我们已mysqld.exe…

【算法刷题】Day10

文章目录 15. 三数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 18. 18. 四数之和题干&#xff1a;算法原理&#xff1a;1、排序 暴力枚举 利用set 去重2、排序 双指针 代码&#xff1a; 15. 三数之和 原题链…

利用python连接MySQL数据库并执行相关sql操作

一、新建MySQL数据库 1.启动MySQL服务 打开phpstudy&#xff0c;开启MySQL服务。如果开启失败的话&#xff0c;可以打开任务管理器&#xff0c;把正在运行的mysqld服务的进程进行关闭&#xff0c;再次打开MySQL服务即可启动。 2.新建MySQL数据库 选择数据库&#xff0c;点击…

linux(3)之buildroot配置软件包

Linux(3)之buildroot配置软件包 Author&#xff1a;Onceday Date&#xff1a;2023年11月30日 漫漫长路&#xff0c;才刚刚开始… 参考文档&#xff1a; Buildroot - Making Embedded Linux Easymdev.txt docs - busybox - BusyBox: The Swiss Army Knife of Embedded Linu…

Elasticsearch分词器--空格分词器(whitespace analyzer)

介绍 文本分析&#xff0c;是将全文本转换为一系列单词的过程&#xff0c;也叫分词。analysis是通过analyzer(分词器)来实现的&#xff0c;可以使用Elasticearch内置的分词器&#xff0c;也可以自己去定制一些分词器。除了在数据写入时将词条进行转换&#xff0c;那么在查询的时…

记一次SQL Server磁盘突然满了导致数据库锁死事件is full due to ‘LOG_BACKUP‘.

背景 最近我们的sql server 数据库磁盘在80左右&#xff0c;需要新增磁盘空间。还是处以目前可控的范围内&#xff0c;但是昨天晚上告警是80%&#xff0c;凌晨2:56分告警是90%&#xff0c;今天早上磁盘就满了。 经过 通过阿里云后台查看&#xff0c;磁盘已经占据99%&#xff0c…