Cocos2d-x使用AssetsManager更新资源和脚本

来源:互联网 发布:coc数据 编辑:程序博客网 时间:2024/05/23 16:56

【说明】

热更新实际就是从服务器下载资源包,保存到本地后解压使用的过程,而Cocos2d已经帮我们封装好了,那就是AssetsManager类,我们只需要关心怎么使用就行了。

【使用】

1. 准备好资源包

我这里直接用的GitHub作为服务器做测试,GitHub的基本使用请参考上一篇文章。

> 创建代码库后,上传一个资源文件(cocos2d-update-temp-package.zip)和一个版本文件(version)

> 分别得到对应的 raw地址。(我是直接开文件,然后点击Raw按钮,然后在地址栏复制的)

2. 项目中使用

> AssetsManager类在extensions中,所以需要引用头文件:

#include "extensions/cocos-ext.h"  

USING_NS_CC_EXT;  

> 创建AssetsManager并且检查更新,代码如下:

std::string packageUrl = "http://raw.githubusercontent.com/ldpjay/Cocos2dx/master/20150803/cocos2dx-update-temp-package.zip";  

std::string versionFileUrl = "http://raw.githubusercontent.com/ldpjay/Cocos2dx/master/20150803/version";  

std::string storagePath = FileUtils::getInstance()->getWritablePath();    

auto pAssets = AssetsManager::create(packageUrl.c_str(), versionFileUrl.c_str(), storagePath.c_str(), CC_CALLBACK_1(Scene02::onError, this), CC_CALLBACK_1(Scene02::onProgress, this), CC_CALLBACK_0(Scene02::onSuccess, this));  

pAssets->retain(); // 如果不加这句会报错(cocos2d-x-v3.7)  

// pAssets->deleteVersion(); // 清除当前版本的版本号  

if (pAssets->checkUpdate())  

{  

    pAssets->update();  

}  

> AssetsManager后三个参数分别是错误、进度和完成的回调函数。

void Scene02::onError(int code)  

{  

    log("update faild. error code %d", code);  

}  

void Scene02::onProgress(int percent)  

{  

    log("update progress : %d", percent);  

}  

void Scene02::onSuccess()  

{  

    log("update success.");  

}  

> 可以再onProgress中实现进度条,在OnSuccess调用后就可以使用更新的资源了。AssetsManager内部已经将存储路径加入“SearchPath”了,所有可以直接用文件的相对路径进行访问。

> 更多使用请查看AssetsManager接口。

3. 效果预览

 

阅读全文
0 0
原创粉丝点击