1.场景切换如何释放资源

如果涉及多个场景的切换,那么资源释放的时机也比较重要,如果释放不对,可能会造成纹理的丢失。那么使用 UILoader 可以避免这种问题。只需要在常驻节点上监听两个事件就好了。


cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LOADING, UILoader.beforeSceneLoading);
         
cc.director.on(cc.Director.EVENT_AFTER_SCENE_LAUNCH, UILoader.afterSceneLaunch);


可以看到,资源被释放的很干净。

资源加载010.png

资源加载011.png

2.如何使部分资源在一段时间内常驻内存,不释放。(本文写成静态资源)

在游戏中也会存在需要这个资源在一段时间内不要销毁。比如棋牌游戏开发中的麻将牌。那么 UILoader 也有方法提供这种机制。例如使用一张静态的纹理去更换纹理


onLoaderPrefabClick3 () {
        let spriteNode = this.node.getChildByName("icon_sprite");
        UILoader.loadStaticRes("HotProgress2", cc.SpriteFrame, "hall",(spriteFrame) => {
            UILoader.replaceSpriteTexture(spriteNode, spriteFrame);
        })
    },




3. 如何释放静态资源。

在某个时候可能不需要使用静态资源了。比如。麻将游戏从游戏中切换到大厅,那么这个资源应该要释放掉。


UILoader.releaseStaticRes();
此时可以看到,静态资源还在内存中。

资源加载012.png

4. 播放音乐音效后,优雅 的是否资源。

在游戏中比如一个音效播放完了,可能不需要再使用。那么此时应该是否掉。音乐也是如此。

UILoader.playMusic(cc.url.raw("resources/man_0_chat_6.ogg"),true, 0.5);

UILoader.playEffect(cc.url.raw("resources/man_0_chat_5.ogg"), 0.5);

后面还会进行更新 UILoader, 请有意者保持关注。 

最后附上 UILoader 开源地址

https://github.com/1083921307/UILoader

博客地址:

http://www.wazhlh.com/