热更新方法assetsmanagerex 释放和 assetsmanager 的区别

cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)
为什么要在线更新资源和脚本文件?
简单概括,如果你的游戏项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那么你需要重新提交一个新版本给平台。但是平台审核和具体的上架时间是个不确定的。具体什么时候能上架,主要由具体的平台决定。
如果游戏项目是使用脚本语言进行编写的(如lua、js),那么一旦需要更新,则可以通过从服务器下载最新的脚本和资源,从而跳过平台直接实现在线更新。(有些平台是禁止在线更新资源方式的,但是你懂得)
闲话少说,本文主要是解决如何在项目中实现在线更新:
我们这里用的是cocos2dx的类AssertsMananger,它在引擎的extensions\assets-manager可以看到。
AssetsManager传三个参数,资源的zip包路径,version路径,写文件的路径。
然后调用AssetsManager的update函数进行下载更新。
设置资源包名称
这里继续沿用cocos2dx的AssetsManager类中默认的名称:cocos2dx-update-temp-package.zip。
如果想要修改文件名,可以直接修改引擎下 extensions\assets-manager\AsetsManager.ccp中的TEMP_PACKAGE_FILE_NAME
选定服务器地址和设置版本号 vc3Ryb25nPgogztLV4sDv08O1xMrHss6/vNfKwc/Su6OsTmVsc7XEuPbIy7/VvOSjqLKpv8212Na3aHR0cDovL3d3dy41OHBsYXllci5jb20vYmxvZy0yNTM3LTk1OTEzLmh0bWyjqcv7tcTXytS0sPzCt762us2xvrDmusWhoyAKIGh0dHA6Ly9zaGV6emVyLnNpbmFhcHAuY29tL2Rvd25sb2FkVGVzdC9jb2NvczJkeC11cGRhdGUtdGVtcC1wYWNrYWdlLnppcCA8YnI+CiBodHRwOi8vc2hlenplci5zaW5hYXBwLmNvbS9kb3dubG9hZFRlc3QvdmVyc2lvbi5waHAgIAo8YnI+Cgo8YnI+CjxzdHJvbmc+QyYjNDM7JiM0Mzu0+sLryrXP1jwvc3Ryb25nPjxicj4K0MK9qFVwZ3JhZGXA4KOsvMyz0NfUQ0NMYXllcgqx4LytVXBncmFkZS5ozsS8/sTayN3I58/Co7oKPGJyPgo8cHJlIGNsYXNzPQ=="brush:">//
Created by Sharezer on 14-11-23.
#ifndef _UPGRADE_H_
#define _UPGRADE_H_
#include "cocos2d.h"
#include "extensions/cocos-ext.h"
class Upgrade : public cocos2d::CCLayer, public cocos2d::extension::AssetsManagerDelegateProtocol
Upgrade();
virtual ~Upgrade();
virtual bool init();
void upgrade(cocos2d::Ref* pSender); //检查版本更新
void reset(cocos2d::Ref* pSender);
//重置版本
virtual void onError(cocos2d::extension::AssetsManager::ErrorCode errorCode);
//错误信息
virtual void onProgress(int percent); //更新下载进度
virtual void onSuccess();
//下载成功
CREATE_FUNC(Upgrade);
cocos2d::extension::AssetsManager* getAssetManager();
void initDownloadDir();
//创建下载目录
std::string _pathToS
cocos2d::Label *_showDownloadI
修改Upgrade.cpp文件如下:
//Upgrade.cpp
#include "Upgrade.h"
#include "CCLuaEngine.h"
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
USING_NS_CC;
USING_NS_CC_EXT;
#define DOWNLOAD_FIEL
"download" //下载后保存的文件夹名
Upgrade::Upgrade():
_pathToSave(""),
_showDownloadInfo(NULL)
Upgrade::~Upgrade()
AssetsManager* assetManager = getAssetManager();
CC_SAFE_DELETE(assetManager);
bool Upgrade::init()
if (!CCLayer::init())
Size winSize = Director::getInstance()->getWinSize();
initDownloadDir();
_showDownloadInfo = Label::createWithSystemFont("", "Arial", 20);
this->addChild(_showDownloadInfo);
_showDownloadInfo->setPosition(Vec2(winSize.width / 2, winSize.height / 2 - 20));
auto itemLabel1 = MenuItemLabel::create(
Label::createWithSystemFont("Reset", "Arail", 20), CC_CALLBACK_1(Upgrade::reset, this));
auto itemLabel2 = MenuItemLabel::create(
Label::createWithSystemFont("Upgrad", "Arail", 20), CC_CALLBACK_1(Upgrade::upgrade, this));
auto menu = Menu::create(itemLabel1, itemLabel2, NULL);
this->addChild(menu);
itemLabel1->setPosition(Vec2(winSize.width / 2, winSize.height / 2 + 20));
itemLabel2->setPosition(Vec2(winSize.width / 2, winSize.height / 2 ));
menu->setPosition(Vec2::ZERO);
void Upgrade::onError(AssetsManager::ErrorCode errorCode)
if (errorCode == AssetsManager::ErrorCode::NO_NEW_VERSION)
_showDownloadInfo->setString("no new version");
else if (errorCode == AssetsManager::ErrorCode::NETWORK)
_showDownloadInfo->setString("network error");
else if (errorCode == AssetsManager::ErrorCode::CREATE_FILE)
_showDownloadInfo->setString("create file error");
void Upgrade::onProgress(int percent)
if (percent setString(progress);
void Upgrade::onSuccess()
CCLOG("download success");
_showDownloadInfo->setString("download success");
std::string path = FileUtils::getInstance()->getWritablePath() + DOWNLOAD_FIEL;
auto engine = LuaEngine::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
if (engine->executeScriptFile("src/main.lua")) {
AssetsManager* Upgrade::getAssetManager()
static AssetsManager *assetManager = NULL;
if (!assetManager)
assetManager = new AssetsManager("/downloadTest/cocos2dx-update-temp-package.zip",
"/downloadTest/version.php",
_pathToSave.c_str());
assetManager->setDelegate(this);
assetManager->setConnectionTimeout(8);
return assetM
void Upgrade::initDownloadDir()
CCLOG("initDownloadDir");
_pathToSave = CCFileUtils::getInstance()->getWritablePath();
_pathToSave += DOWNLOAD_FIEL;
CCLOG("Path: %s", _pathToSave.c_str());
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
DIR *pDir = NULL;
pDir = opendir(_pathToSave.c_str());
if (!pDir)
mkdir(_pathToSave.c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
if ((GetFileAttributesA(_pathToSave.c_str())) == INVALID_FILE_ATTRIBUTES)
CreateDirectoryA(_pathToSave.c_str(), 0);
CCLOG("initDownloadDir end");
void Upgrade::reset(Ref* pSender)
_showDownloadInfo->setString("");
// Remove downloaded files
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
string command = "rm -r ";
// Path may include space.
command += "\"" + _pathToSave + "\"";
system(command.c_str());
std::string command = "rd /s /q ";
// Path may include space.
command += "\"" + _pathToSave + "\"";
system(command.c_str());
getAssetManager()->deleteVersion();
initDownloadDir();
void Upgrade::upgrade(Ref* pSender)
_showDownloadInfo->setString("");
getAssetManager()->update();
其中 Upgrade::onSuccess()函数中,我这里调用的是main.lua文件
auto engine = LuaEngine::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
if (engine->executeScriptFile("src/main.lua")) {
}如果是c++项目,可以自己调用相应的C++文件。
#include "HelloWorldScene.h"
auto scene = HelloWorld::scene();
Director::getInstance()->replaceScene(scene);
修改AppDelegate.cpp文件调用Upgrade类
AppDelegate.h无需修改,cpp稍微修改一下就可以了
头文件中加入#include "Upgrade.h"
主要是修改了AppDelegate::applicationDidFinishLaunching()函数中调用Upgrade类
#include "AppDelegate.h"
#include "CCLuaEngine.h"
#include "SimpleAudioEngine.h"
#include "cocos2d.h"
#include "Upgrade.h"
using namespace CocosD
USING_NS_CC;
AppDelegate::AppDelegate()
AppDelegate::~AppDelegate()
SimpleAudioEngine::end();
bool AppDelegate::applicationDidFinishLaunching()
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::createWithRect("dragan", Rect(0,0,900,640));
director->setOpenGLView(glview);
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::NO_BORDER);
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
//auto engine = LuaEngine::getInstance();
//ScriptEngineManager::getInstance()->setScriptEngine(engine);
//if (engine->executeScriptFile("src/main.lua")) {
auto scene = Scene::create();
auto layer =
Upgrade::create();
Director::getInstance()->runWithScene(scene);
scene->addChild(layer);
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
Director::getInstance()->stopAnimation();
SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
Director::getInstance()->startAnimation();
SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
修改cocos2dx的main.lua
我只是把其中一个资源文件名字和路径参考下载资源包中的路径修改了,以便看到资源更新的效果。
例如我把农场背景图片改为了下载资源包中的3D/CompleteMap.PNG
编译运行项目:
Reset:用于重置版本号,办删除下载资源。
Upgrad:校验版本号,当有更新时下载新资源。
_pathToSave保存着文件的下载路径,压缩包下载下来后,将被自动解压到_pathToSave中。
以win32为例,下载的资源是保存在Debug.win32\ 中,可以看到我们之前设置的下载目录download。
onSuccess中,当下载成功后,将跳转到main.lua中。
这时可以看到该文件已经直接使用已下载的资源。
______________________________________________________________________________
/blog-.html
Nels的个人空间
3.2引擎版本 lua热更新 自动更新
https://zengrong.net/post/2131.htm
这个关于lua热更新的文章也是写得甚好!十分容易明白,步骤清晰
https://blog.csdn.net/xiaominghimi/article/details/8825524
Himi关于热更新的解析贴
cocos2dx 2.x引擎版本
https://blog.csdn.net/cloud95/article/details/
cocos2dx lua热更新 实例版本,语言貌似比较通俗
/bbs/simple/?t183552.html
cocos关于热更新的讨论帖(关于路径的讨论很经典)
/bbs/read.php?tid=213066
cocos2dx lua 游戏热更新
https://lcinx./blog/static//
https://my.oschina.net/u/1785418/blog/283043
基于Quick-cocos2dx 2.2.3 的动态更新实现完整篇。(打包,服务器接口,模块自更新)
https://blog.csdn.net/q/article/details/8463835
lua热更新原理
https://lcinx./blog/static//
lua 热更新原理cocos2d-js 热更新模块 使用AssetsManager - CSDN博客
cocos2d-js 热更新模块 使用AssetsManager
原帖子地址:http://cn.cocos2d-x.org/tutorial/show?id=1186
在这个文章中原作者已经说的很清楚,我在这个其他改动一些适用我项目中需求
1.满足Web和Native一套工程:为了维护方便
2.检测更新每天只执行一次:每次打开会等待,一天打开多次会卡多次。这个改动只适合自己的
AssetsManager 类:
var __failCount = 0;
toFix = function(num, length) {
return ('' + num).length & length ? ((new Array(length + 1)).join('0') + num).slice(-length) : '' +
var AssetsManagerLoaderScene = cc.Scene.extend({
_progress:null,
_percent:0,
_percentByFile:0,
_progressText : &&,
run:function(){
if (!cc.sys.isNative){
this.loadGame();
var myDate = new Date();
var year = myDate.getFullYear();
var month = toFix(myDate.getMonth() + 1,2);
var day = toFix(myDate.getDate(),2);
var nowDate = year + && + month + && +
var lastDate = cc.sys.localStorage.getItem(&kAssetsDate&);
//一天只检测一次
if(parseInt(nowDate) & parseInt(lastDate)
|| lastDate == null
|| lastDate == undefined
|| lastDate == &&){
cc.sys.localStorage.setItem(&kAssetsDate&,nowDate);
this.loadGame();
var layer = new cc.Layer();
this.addChild(layer);
this._progressText = &升级中 &;
if(cc.sys.language == cc.sys.LANGUAGE_ENGLISH){
this._progressText = &UPDATING &;
this._progress = new cc.LabelTTF(this._progressText +&0.00%&, &Arial&, 40);
this._progress.x = cc.winSize.width / 2;
this._progress.y = cc.winSize.height / 2 + 50;
layer.addChild(this._progress);
// android: /data/data/com.huanle.magic/files/
var storagePath = (jsb.fileUtils ? jsb.fileUtils.getWritablePath() : &/&);
cc.log(&AssetsManagerLoaderScene storagePath=&+storagePath);
this._am = new jsb.AssetsManager(&res/project.manifest&, storagePath);
this._am.retain();
if (!this._am.getLocalManifest().isLoaded())
cc.log(&Fail to update assets, step skipped.&);
this.loadGame();
cc.log(&packageUrl = &+);
var that =
var listener = new jsb.EventListenerAssetsManager(this._am, function(event) {
cc.log(&listener................&);
switch (event.getEventCode()){
case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST:
cc.log(&No local manifest file found, skip assets update.&);
that.loadGame();
case jsb.EventAssetsManager.UPDATE_PROGRESSION:
that._percent = event.getPercent();
that._percentByFile = event.getPercentByFile();
cc.log(that._percent + &%&);
var msg = event.getMessage();
if (msg) {
cc.log(msg);
case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:
case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST:
cc.log(&Fail to download manifest file, update skipped.&);
that.loadGame();
case jsb.EventAssetsManager.ALREADY_UP_TO_DATE:
case jsb.EventAssetsManager.UPDATE_FINISHED:
cc.log(&Update finished.&);
that.loadGame();
case jsb.EventAssetsManager.UPDATE_FAILED:
cc.log(&Update failed. & + event.getMessage());
__failCount ++;
if (__failCount & 5)
that._am.downloadFailedAssets();
cc.log(&Reach maximum fail count, exit update process&);
__failCount = 0;
that.loadGame();
case jsb.EventAssetsManager.ERROR_UPDATING:
cc.log(&Asset update error: & + event.getAssetId() + &, & + event.getMessage());
that.loadGame();
case jsb.EventAssetsManager.ERROR_DECOMPRESS:
cc.log(event.getMessage());
that.loadGame();
cc.eventManager.addListener(listener, 1);
this._am.update();
cc.director.runScene(this);
this.schedule(this.updateProgress, 0.5);
loadGame:function(){
cc.log(&loadGame&);
if (cc.sys.isNative){
cc.loader.loadJs([&src/files.js&], function(err){
cc.loader.loadJs(jsFiles, function(err){
cc.LoaderScene.preload(g_resources, function () {
cc.director.runScene(new MainScene());
cc.LoaderScene.preload(g_resources, function () {
cc.director.runScene(new MainScene());
updateProgress:function(dt){
this._progress.string = this._progressText + this._percent.toFixed(2)+&%&;//&& + this._
onExit:function(){
cc.log(&AssetsManager::onExit&);
this._am.release();
this._super();
QQ群: cocos 技术交流 欢迎您
本文已收录于以下专栏:
相关文章推荐
1. 热更新基本思路
得到cocoachina论坛上fysp和akira_cn的帮助,理清了游戏热更新的思路:
执行AssetsManager后,搜索路径增加了jsb.fileUtil...
Cocos 3.6版本热更新梳理
cocos热更新实现了项目资源和脚本文件的动态更新。当工程有新的改动时,用户无需重新下载完整的安装包,而是通过对比本地与最新的版本信息,仅下载有改动的文件到本地,...
第一次动手弄热更新将这过程记录一下。1.热更新基本原理
这里先说一下热更新的基本原理
1)不能更新主程序,只能更新资源、lua等文件
c++生成的主程序如果变化只能通过下载升级包安装,而其它文件...
cocos2d-js下的热更新机制
首先介绍project.manifest:
"packageUrl" : "http://192.168.1.108/games/dragon_...
热更新方法:
大致原理:
creator 打包出来的工程目录和vs项目的目录基本相同,在客户端实际执行的文件其实就是buil...
工作需要,在空闲时间看了下Cocos2d-JS的热更新。对其进行了一个简单的实现,这里总结分享一下。
Cocos2d-JS 热更新
Cocos2d-JS 热更新是啥?Cocos...
基于cocos2d js 的热更新学习笔记!
热更新的使用方法参考自/kenkofox/p/3906681.html以及官网资料,感谢大神的资料。
有几个要注意的地方:...
cocos2d热更新代码分析#include "AssetsManagerEx.h"
#include "CCEventListenerAssetsManagerEx.h"
#include "dep...
cocos2d-js 热更新详解
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)主题 : 热更新bug帮忙看下。
级别: 侠客
可可豆: 492 CB
威望: 491 点
在线时间: 318(时)
发自: Web Page
热更新bug帮忙看下。&&&
{ gl.supports_vertex_array_object: true cocos2d.x.version: cocos2d-x-3.10 gl.vendor: Intel Inc. gl.supports_PVRTC: false gl.renderer: Intel HD Graphics 5000 OpenGL Engine piled_with_profiler: false gl.max_texture_size: 16384 gl.supports_ETC1: false gl.supports_BGRA8888: false cocos2d.x.build_type: DEBUG gl.supports_discard_framebuffer: false gl.supports_NPOT: true gl.supports_S3TC: true gl.version: 2.1 INTEL-10.6.33 gl.supports_ATITC: false gl.max_texture_units: 16 piled_with_gl_state_cache: true}cocos2d: fullPathForFilename: No file found at script/jsb_prepare.jsc. Possible missing file.cocos2d: fullPathForFilename: No file found at script/jsb_boot.jsc. Possible missing file.JS: Cocos2d-JS v3.10loader for [.manifest] not exists!libpng warning: Interlace handling should be turned on when using png_read_imagelibpng warning: Interlace handling should be turned on when using png_read_imagelibpng warning: Interlace handling should be turned on when using png_read_imageSuccess to load scene: db://assets/Scenes/UpdateScene.fireStorage path for remote asset : /Users/kaifeng/Documents/kaifeng-remote-assetStorage path for remote asset : /Users/kaifeng/Documents/kaifeng-remote-assetjsb: ERROR: File /Users/kaifeng/Desktop/HotUpdate/build/HotUpdate/jsb/frameworks/cocos2d-x/cocos/scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.cpp: Line: 6764, Function: js_cocos2dx_extension_AssetsManagerEx_constructorjs_cocos2dx_extension_AssetsManagerEx_constructor : Error processing argumentsJS: /Users/kaifeng/Library/Developer/Xcode/DerivedData/HotUpdate-goewcectagdsqjfhpejwiuqrblaq/Build/Products/Debug/HotUpdate-desktop.app/Contents/Resources/src/project.js:1:Error: js_cocos2dx_extension_AssetsManagerEx_constructor : Error processing argumentsAssetsManagerEx : Fail to download version file, step skippedCode: 1Fail to download manifest file, hot update skipped.
级别: 侠客
可可豆: 492 CB
威望: 491 点
在线时间: 318(时)
发自: Web Page
另外我用的是cocos creator 0.7.1 . 但是官方的热更新方案是0.8。是不是这个原因....????
级别: 版主
可可豆: 221 CB
威望: 221 点
在线时间: 125(时)
发自: Web Page
jsb: ERROR: File /Users/kaifeng/Desktop/HotUpdate/build/HotUpdate/jsb/frameworks/cocos2d-x/cocos/scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.cpp: Line: 6764, Function: js_cocos2dx_extension_AssetsManagerEx_constructorjs_cocos2dx_extension_AssetsManagerEx_constructor : Error processing argumentsJS: /Users/kaifeng/Library/Developer/Xcode/DerivedData/HotUpdate-goewcectagdsqjfhpejwiuqrblaq/Build/Products/Debug/HotUpdate-desktop.app/Contents/Resources/src/project.js:1:Error: js_cocos2dx_extension_AssetsManagerEx_constructor : Error processing arguments这是主要错误,你可以打包的时候,选择调试模式,这样既可以在 src/project.js 中找到具体出错的代码行数,应该就是 new jsb.AssetManager 这句。仔细检查一下你的参数是否正确。
级别: 侠客
可可豆: 492 CB
威望: 491 点
在线时间: 318(时)
发自: Web Page
回 2楼(panda) 的帖子
找到bug了。bug定位到了c++层。Couldn’t resolve host name.但是我的tomcat没问题啊。同样我将官方git上的热更新demo 24点那个弄下来。把它1.1.0的放到我的tomcat里 就可以正常更新。我将我项目的源码压缩传上来了。如果您有空麻烦您看下。
(1869 K) 下载次数:18
级别: 新手上路
可可豆: 3 CB
威望: 3 点
在线时间: 46(时)
发自: Web Page
libpng warning: Interlace handling should be turned on when using png_read_imagelibpng warning: Interlace handling should be turned on when using png_read_imagelibpng warning: Interlace handling should be turned on when using png_read_image解决了吗
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版主题 : cocos2d-x3.0 AssetsManagerTest update 失败
级别: 新手上路
可可豆: 55 CB
威望: 57 点
在线时间: 154(时)
发自: Web Page
cocos2d-x3.0 AssetsManagerTest update 失败&&&
使用 cocos2d-x3.0 AssetsManagerTest 进行 update,重新 reset 后,结果还是一直 not new version. Debug 了一下,发现从源码中 curl 得到的 _version 为空。我尝试地在浏览器打开获取版本号的链接,发现得到的结果是 1.0.1。于是在代码里面直接将版本号写死为 1.0.1。这次是可以下载了,但下载得到的结果 cocos2dx-update-temp-package.zip 居然是空的。然后 log 中显示的是 can not open downloaded zip file。。。Google 了之后,一直得不到解决。
级别: 侠客
可可豆: 208 CB
威望: 208 点
在线时间: 256(时)
发自: Web Page
你好,这个问题可能是由于我们的测试例所使用的服务端的问题,你能否尝试一下用自己的服务器资源,然后修改测试例中的链接呢?另外,AssetsManager最近进行了彻底的重构,使用方式和以前有很大差别,将会在Cocos2d-x 3.2中合并到主分支,不过现在的Cocos2d-JS 3.0 beta已经可以看到预览版的实现。新AssetsManager的主要特性是允许用Manifest定义资源列表,支持脚本文件和资源的热更新,支持zip压缩格式,支持多文件并发下载,支持断点续传,进度信息。
级别: 新手上路
可可豆: 55 CB
威望: 57 点
在线时间: 154(时)
发自: Web Page
回 1楼(fysp) 的帖子
非常非常抱歉。对这个论坛不是特别熟悉,所以提了一个重复的问题(),然后 google 了几页都没有找到这个问题。非常感谢版主的回答,我尝试 着搭个服务器试试。另外,版主,我们采用的是 cocos2dx lua 的,不知道能不能用你重构后的。请问重构后的 cocos2d-x 是什么时候发布呢,好期待!btw,这个论坛是否可以做问题重定向,方便访问上面那个链接的同学也可以看到官方人员的回答。
级别: 侠客
可可豆: 208 CB
威望: 208 点
在线时间: 256(时)
发自: Web Page
回 2楼(爱学习的小王) 的帖子
LUA也可以使用重构后的AssetsManager,关于新的AssetsManager,你可以参考Cocos2d-JS的文档,不过Cocos2d-JS 3.0beta中的API还没有彻底稳定下来,RC版中文档会更新,到时也可以看看最终固定的API是什么样子。-x的路线图上AssetsManager将在3.2中被合并,具体时间还没有确定JS文档:
级别: 新手上路
UID: 329646
可可豆: 127 CB
威望: 103 点
在线时间: 142(时)
发自: Web Page
回 1楼(fysp) 的帖子
lua&&或者&&C++的是不是要到3.2才能正常使用,我那边一直下载不了,最后打信息是can not open downloaded zip file
级别: 新手上路
可可豆: 58 CB
威望: 60 点
在线时间: 32(时)
发自: Web Page
我用的3.11.1版本,换了自己的服务器地址,依然不能打开zip包,求救!!!!!
图片:屏幕快照
下午4.01.49.png
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版}

我要回帖

更多关于 cc.assetsmanager new 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信