社区开源框架音效管理模块:AvatarManager详解

时间:2022-07-24
本文章向大家介绍社区开源框架音效管理模块:AvatarManager详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

框架文档地址:GameAIs.Com

LollipopCreator:AvatarManager

LollipopCreator游戏框架

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

Index

返回首页

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

如何设计

1. 工程中的头像资源管理,包括头像资源的加载等

调用流程

例子:
    load() {
        cc.loader.loadResDir('Base/data/ABhead', cc.SpriteFrame, (err, assets) => {
            if (err) {
                return cc.error(err)
            }
            assets.forEach((it) => {
                this.staticHead[it.name] = it
            })
        })
    }
	注意点:资源位置Base/data/ABhead,其中ABhead目录是可以换成自己的目录的

实例代码

'use strict'


class AvatarManager {
    constructor() {
        this.textures = {}
        this.staticHead = {}
    }

    load() {
        cc.loader.loadResDir('Base/data/ABhead', cc.SpriteFrame, (err, assets) => {
            if (err) {
                return cc.error(err)
            }
            assets.forEach((it) => {
                this.staticHead[it.name] = it
            })
        })
    }

    getHeadImgByIdx(idx) {
        // return this.staticHead[`tx_${idx + 1}`]
        if (idx == 0)
            idx = 1;
        return this.staticHead[`tx_${idx}`]
    }

    setByTex(node, tex) {
        let sp = node.getComponent(cc.Sprite)
        sp.spriteFrame = new cc.SpriteFrame(tex)
        // node.width = node.width
        // node.height = node.height
    }

    setByURL(node, url) {
        // if (!cc.sys.isNative || !url) {
        let sp = node.getComponent(cc.Sprite)
        // sp.spriteFrame = null
        sp.spriteFrame = this.getHeadImgByIdx(url);

        // 读取网络的数据
        if (!url) {
            return
        }

        if (this.textures[url]) {
            this.setByTex(node, this.textures[url])
        } else {
            cc.loader.load({ url: url, type: "jpg" }, (err, tex) => {
                if (err) {
                    return cc.log('setByURL fail to load ', url)
                }

                this.textures[url] = tex
                this.setByTex(node, tex)
            })
        }
    }
}

window.avatarMgr = new AvatarManager

Golang语言社区 | ByteEdu教育平台

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。