[0]图集资源更新和显示问题

最近做了图集资源,加载, 显示的时候使用了图集名加图片名, 显示图片.
但是我发现, 要更新这个图集里的某张图时, 显示的时候,并不是最新的.
网上说加参数, 然后在图片路径后加随机数, 这次直接不显示,报错.路径不对, 以下是代码:
        var res_array = [
{url:http_url+"res/atlas/login.atlas", type: Laya.Loader.ATLAS}
];
Laya.loader.load(res_array,
Handler.create(this, this.onAssetLoaded,null),
Handler.create(this, this.onLoading, null, false));
Laya.loader.on(Event.ERROR, this, this.onError);
这是加载代码
 
以下是使用代码:
        var accountBtn =new Laya.Image("login/account_btn.png?"+Math.random());
accountBtn.size(496, 104);
this.parent.addChild(accountBtn);
accountBtn.name = "account";
accountBtn.y = accountBtn.height*0.75;
accountBtn.on(laya.events.Event.MOUSE_DOWN, this, this.account_login);

如果login/account_btn.png 后面没加随机数, 可以显示图片, 但不能更新account_btn.png这张图片, 如果加了却不显示图片.这是什么问题 ? 求指导.
已邀请:

godbenson

赞同来自:

首先确认下图集是否存在,如果存在的话,看看图集对应的png资源是不是最新的,不是的话,可以删除图集,重新用laya导出资源,再试试。

闲云&野鹤

赞同来自:

使用引擎的版本管理吧~在发布的面板下方有勾选的,自己管理还是比较 麻烦的。

闲云&野鹤

赞同来自:

发布面板勾选一下试试,用引擎自带的管理比较 好点,自己管理比较麻烦,特别资源很多的时候。
20210925111100.png

 

pikapikaqiu

赞同来自:

你这种问题有以下几种可能:
1.你更新了client\laya\assets目录下的图片。但是没有重新发布新的图集图片。先检查生成的图集(一般在bin\res\atlas目录下)。生成的图集内是否包含更新了的图片。如果图集是最新的。则看2。
2.图集是新的。但是在小游戏端,会将下载的图片都存在本地。此时即便更新了图集,由于图集路径没有任何变化,所以小游戏会使用本地存储的文件。不会去使用网络上更新了的图片。
遇到这个问题。有三种情况。如果是本地测试,可以直接清除小游戏缓存,从而将本地存储的图片给删除。强制下载最新的图片。如果不是本地测试而是外网正式环境。因为不可能去让玩家清除本地缓存。所以我们必须做处理。
有两种处理方式。
第一种是文件下载路径前都添加上游戏版本数。比如CDN上的资源目录为.../1.0.0/res/...。这样如果版本号更新为了1.0.1。则所有文件都会下载新的。但这种方法并不好。因为每次更新版本玩家都需要下载一遍所有的资源。会很浪费CDN流量和玩家手机流量。
第二种是使用Laya提供的资源版本管理:https://ldc2.layabox.com/doc/?nav=zh-ts-3-0-5
这个资源版本管理看过去复杂。实际很简单。本质就是讲所有资源文件名修改。改为添加了该文件MD5码后缀的名字。比如文件A.png。就会变成A-1asdad11.png。
然后会有生成一个version.json文件,里面存储了所有资源文件名字的映射。比如A文件就会在这个version.json内有一行是.../A.png,.../A-1asdad11.png。每次游戏要去下载资源的时候都会先看下这个映射文件内是否存在映射后的名字。如果存在就下载映射后带有md5码后缀的名字的文件。
一个文件的MD5码是唯一的。如果这个文件修改了。它的MD5码就会改变。下次发布的时候这个文件的名字就会改变。从而确保玩家下载的都是最新的文件。

要回复问题请先

商务合作
商务合作