1.开启内存资源监测情况


在UI树的根节点挂上一个 GameScene 脚本,在 GameScene 脚本的 onLoad方法里添加 下面这一行代码


MemoryDetector.showMemoryStatus();


此时你会看到 左下角有 内存纹理的计算

资源加载001.png


2. 对场景自身携带的资源进行引用计数统计


在UI树的根节点挂上一个 GameScene 脚本,在 GameScene 脚本的 onLoad方法里添加 下面这一行代码


 UILoader.retainScene(this.node);


3. 加载一个预制体资源,并在场景中显示


在UI树的根节点挂上一个 GameScene 脚本,在 GameScene 脚本的 添加一个 onLoaderPrefabClick 方法里添加 下面这一行代码


onLoaderPrefabClick () {
        UILoader.loadRes("select", cc.Prefab, (prefab) => {
            UILoader.instantiate(prefab, this.node, (node) => {

            });
        });
    },


绑定事件后,点击加载资源,我们会看到

资源加载002.png


4. 销毁这个预制体创建出来的节点。


onLoad () {
        this.node.on(cc.Node.EventType.TOUCH_START, () => {
            cc.log("触发点击事件");
            UILoader.destroy(this.node);
        });
    },


此时我们会看到资源已经释放了,并且和资源加载前大小一样,说明我们已经释放干净了,有人可能会说,你那不足以证明释放干净了。那么后面文章会进行相关的说明,现在不加以说明。



资源加载003.png


5. 更换Sprite纹理


在UI树的根节点挂上一个 GameScene 脚本,在 GameScene 脚本的 添加一个 onLoaderPrefabClick1 方法里添加 下面这一行代码


onLoaderPrefabClick1 () {
        let spriteNode = this.node.getChildByName("icon_sprite");
        UILoader.loadRes("gamename_103", cc.SpriteFrame, (spriteFrame) => {
            UILoader.replaceSpriteTexture(spriteNode, spriteFrame);
        })
    },


此时我们能够看见,资源统计明显有变化。


资源加载004.png


5. 更换Button纹理


在UI树的根节点挂上一个 GameScene 脚本,在 GameScene 脚本的 添加一个 onLoaderPrefabClick2 方法里添加 下面这一行代码

onLoaderPrefabClick2 () {
        let spriteNode = this.node.getChildByName("icon_button");
        UILoader.loadRes("loginbackBtn", cc.SpriteFrame, (spriteFrame) => {
            UILoader.replaceButtonTexture(spriteNode, spriteFrame, spriteFrame, spriteFrame, spriteFrame);
        })
    },


此时我们也可以看到纹理计算明显少了0.04M

资源加载005.png


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

最后附上 UILoader 开源地址

https://github.com/1083921307/UILoader

博客地址:

http://www.wazhlh.com/