多个AssetManager的进度问题

在quick 3.3中,我的启动和监听assetsmanager的代码如下:
local function onProgress(event)

end
local assetsManager = cc.AssetsManager:new(PackageUrl,
versionFileUrl,
pathToSave)
assetsManager:retain()
assetsManager:setDelegate(onProgress, cc.ASSETSMANAGER_PROTOCOL_PROGRESS)
assetsManager:setConnectionTimeout(3)
assetsManager:update()

现在我遇到一个问题,就是当我同时创建两个assetsmanager对象时(也就是同时有两个在下载),这两个assetsmanager对象在onProgress函数中的返回值貌似会相互串掉(也就是我第一个assetsmanager监听的进度返回值event有可能变成第二个assetsmanager的进度值event),请问这个问题大家遇到过吗,该如何解决呢?

大家有用assetsmanager同时下载多个任务吗~

用闭包封装一下回调函数:

local function onProgress(target, event)

end

assetsManager1:setDelegate(function (event)
onProgress(assetsManager1, event)
end, cc.ASSETSMANAGER_PROTOCOL_PROGRESS)

你好,我看了下assetsmanager.cpp的代码,发现这个函数:
int assetsManagerProgressFunc(void *ptr, double totalToDownload, double nowDownloaded, double totalToUpLoad, double nowUpLoaded)
{
static int percent = 0;
int tmp = (int)(nowDownloaded / totalToDownload * 100);

if (percent != tmp)
{
    percent = tmp;
    Director::getInstance()->getScheduler()->performFunctionInCocosThread(=]{
        auto manager = static_cast<AssetsManager*>(ptr);
        if (manager->_delegate)
            manager->_delegate->onProgress(percent);
    });
    
    CCLOG("downloading... %d%%", percent);
}

return 0;

}

这个percent就是我onProgress的返回值,但是我创建了多个assetsmanager的对象,因此这个percent应该仅仅是对象的属性,不应该是类的属性,所以不能是static变量,把static去掉改为int percent = 0;重新编译 就可以了~否则很多个assetsmanager对象都会对共有的static percent做修改,导致percent这个值不断改变,就有了我之前的问题~

这确实是个问题,应该是assetsmanager在设计时就没有考虑过多个对象同时下载的情况