地址:https://github.com/Golangltd/LollipopCreator
版本刚刚开源,后续会持续更新!
框架文档地址:GameAIs.Com
LollipopCreator游戏框架
游戏客户端开发中,由于制作人或者策划立项的不同,导致前端开发并不像后端框架不变,例如 2D游戏开发,引擎选择就比较多,Unity、cocos、 白鹭等都可以,本系列就是给大家开源一套cocos creator引擎开发的2D游戏框架LollipopGo。 creator 系统为例,给大家梳理下前端2D游戏架构的基础设计思想。
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()