社区开源框架预制件相关模块:CollectManager详解
时间:2022-07-24
本文章向大家介绍社区开源框架预制件相关模块:CollectManager详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
地址:https://github.com/Golangltd/LollipopCreator
版本刚刚开源,后续会持续更新!
框架文档地址:GameAIs.Com
LollipopCreator:CollectManager
LollipopCreator游戏框架
游戏客户端开发中,由于制作人或者策划立项的不同,导致前端开发并不像后端框架不变,例如 2D游戏开发,引擎选择就比较多,Unity、cocos、 白鹭等都可以,本系列就是给大家开源一套cocos creator引擎开发的2D游戏框架LollipopGo。 creator 系统为例,给大家梳理下前端2D游戏架构的基础设计思想。
Index
返回首页
- 如何设计
- 调用流程
- 实例代码
如何设计¶
1. 预制件的注册和释放模块
调用流程
实例代码
class CollectManager {
constructor() {
this.bucket = {}
this.urls = {}
}
register(pfbURL) {
if (this.urls[pfbURL]) {
return
}
let deps = cc.loader.getDependsRecursively(pfbURL)
cc.log('collectMgr.register...', deps.length)
deps.forEach((path) => {
let cnt = this.bucket[path] || 0
this.bucket[path] = ++cnt
})
this.urls[pfbURL] = true
}
release(pfbURL) {
if (!this.urls[pfbURL]) {
cc.log('pbfURL is not exist', pfbURL)
return
}
let deps = cc.loader.getDependsRecursively(pfbURL)
let arr = []
deps.forEach((path) => {
let cnt = this.bucket[path] || 0
if (cnt > 1) {
this.bucket[path] = cnt - 1
} else {
if (cnt == 1) {
delete this.bucket[path]
}
arr.push(path)
}
})
cc.loader.release(arr)
delete this.urls[pfbURL]
arr.forEach((path, i) => {
cc.log('release data:', i, path)
})
cc.log('collectMgr.release', arr.length, pfbURL)
}
print() {
for (let key in this.bucket) {
cc.log(key, this.bucket[key])
}
}
}
window.collectMgr = new CollectManager()
- 剑指OFFER之最小的K个数(九度OJ1371)
- 剑指OFFER之数组中出现次数超过一半的数字(九度OJ1370)
- 如何成为一名10x的数据分析师?
- 肥料生产商全套三拼在手:拟融资1.47亿元
- 《外媒Cointelegraph专访Qtum量子链Jordan Earls》—浅谈目前Dapps的主要问题
- ASP .Net Core 2.0 修改默认端口
- 不满一岁的潜力股:2017年3D打印机器人盘点
- Reporting Service报表开发
- 不要信任云:这不只是安全的问题
- C#温故而知新—闲话.Net
- c# IO&&线程 打造 定时打开指定程序
- 前FDIC主席:比特币政策不应打击加密货币发展
- 任何人都不应该控制区块链供应链
- c# IO操作(带进度的文件复制器,读取文本文件的指定行)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【线性回归】读取txt
- 走近STL - Vector,再次见面
- 【线性回归】标准方程法
- 133: error: in C++98 XXX must be initialized by constructor, not by '{...}'
- spring之如何将验证错误信息显示在相应界面
- 【python-leetcode329-深度优先搜索】矩阵中的最长递增路径
- 带权树 -- 哈夫曼树,与它的那张哈夫曼编码表
- 【python-动态规划】0-1背包问题
- python之列表推导和生成器表达式
- 二叉树的前中后序遍历
- 【tensorflow2.0】处理结构化数据-titanic生存预测
- 【pandas】pandas中的常见函数
- 走进STL - 哈希表,散装称重么
- 第八届蓝桥杯省赛javaB组题目解析
- 拥抱STL - 类/结构体元素查询与排序