前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >社区开源框架预制件相关模块:CollectManager详解

社区开源框架预制件相关模块:CollectManager详解

作者头像
李海彬
发布2020-09-02 10:55:43
发布2020-09-02 10:55:43
34300
代码可运行
举报
文章被收录于专栏:Golang语言社区Golang语言社区
运行总次数:0
代码可运行

地址:https://github.com/Golangltd/LollipopCreator

版本刚刚开源,后续会持续更新!

框架文档地址:GameAIs.Com

LollipopCreator:CollectManager

LollipopCreator游戏框架

游戏客户端开发中,由于制作人或者策划立项的不同,导致前端开发并不像后端框架不变,例如 2D游戏开发,引擎选择就比较多,Unity、cocos、 白鹭等都可以,本系列就是给大家开源一套cocos creator引擎开发的2D游戏框架LollipopGo。 creator 系统为例,给大家梳理下前端2D游戏架构的基础设计思想。

Index

返回首页

  • 如何设计
  • 调用流程
  • 实例代码

如何设计¶

代码语言:javascript
代码运行次数:0
复制
1. 预制件的注册和释放模块

调用流程

实例代码

代码语言:javascript
代码运行次数:0
复制
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()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LollipopCreator:CollectManager
    • Index
    • 返回首页
    • 如何设计¶
    • 调用流程
    • 实例代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档