五、微信小游戏 --- 资源管理(加载远程服务器资源)

本文介绍如何在微信小游戏中处理超出4MB代码包限制的问题。通过将大部分资源放置于远程服务器并进行合理配置,确保游戏正常运行。文章还分享了解决过程中遇到的具体问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

由于代码包的限制4MB。我们在项目有50MB的时候,需要将部分资源放到远程服务器下载。

我们要做的事情有:

1. 将大部分资源放到远程服务器(支持https,wss) 。

2. 上传微信平台时,只上传小于4MB的必要代码和资源。

3. 在游戏运行时,从远程服务器加载资源。

参考论坛水友的帖子:微信小游戏包内资源、包外资源分开加载

 

 

一、代码包大小限制

由于代码包大小只有4MB。假如游戏有50MB,只能上传4MB以内主项目的代码和小部分资源,将多余资源放在自己服务器上远程加载。

二、游戏资源分组(没有https服务器,所以没有实践成功。)

(补充:后来发现可以勾选不校验域名)

我们在assets中放入多张图片,让项目超过4MB。

 

这时,代码包的大小超过4MB限制,不让上传了。

 

 将大部分图片资源放在远程服务器上,我这里服务器是阿里云的,IP是120.24.188.118。

 

在代码里加载外部服务器资源配置文件。game.res.json是新建的资源配置文件,主要放远程资源,原来的default.res.json放直接上传到微信平台的资源。

 

 结果报错。不合法。因为不支持IP,所以IP换成域名,同样也不合法。

 

到微信公众平台去配置服务器,在平台上找到设置->开发设置->服务器域名

 

 

如果不设置服务器域名,则需要勾选微信开发者工具-详情-不校验合法域名...

这样方能测试..

 

 

 

//代码开始开启纹理跨域,没有这句webgl纹理跨域
egret.ImageLoader.crossOrigin = "anonymous";

  

问题:

1. 主项目assets中的图片资源,在微信开发者工具中assets里却没有。

主项目中有rank_bg.png,直接在微信开发者工具中运行,能够获取并显示这张图片。

但是微信开发者工具文档栏中assets下并没有这张图片,导致上传后使用真机扫码访问测试时,不能获取显示这张图片。

重启微信开发者工具,就有了,然后上传,才能在真机扫码测试时获取和显示这张图片

 

转载于:https://www.cnblogs.com/gamedaybyday/p/9073608.html

### Cocos Creator 微信小游戏分包加载实现方法 #### 1. 配置项目结构支持分包 为了使微信小游戏能够正常识别并处理分包,在 `project.json` 文件中配置 `"subpackages"` 字段来定义各个子包的信息[^3]。 ```json { "subpackages": [ { "root": "subpackageA", "name": "subpackageA" }, ... ] } ``` #### 2. 设置资源路径映射表 通过编辑 `.exportrc.js` 或者直接修改构建后的资源配置文件,确保不同模块下的资源被正确分配到对应的分包内。对于较大的二进制文件(如图片、音频),考虑将其放置于独立目录以便更好地管理大小限制问题[^4]。 #### 3. 加载指定名称的分包 利用官方API接口 `cc.loader.downloader.loadSubpackage()` 方法按需动态下载特定名字的空间数据。当调用此函数时传入想要加载的那个子包包名字符串参数即可触发网络请求过程[^2]: ```javascript // 加载名为 'common' 的分包 cc.loader.downloader.loadSubpackage('common', function (err, res) { console.log(err || 'success'); }); ``` #### 4. 获取远程 Bundle 加载进度 如果希望向玩家展示详细的加载状态,则可以在发起异步操作之前订阅事件监听器捕获实时更新的通知消息。具体做法是在执行 `loadSubpackage` 前注册全局作用域内的回调处理器用于接收来自服务器端返回的数据流变化情况报告[^5]: ```typescript const onProgressCallback = progress => { // 更新UI界面中的百分比数值或其他形式的表现方式 }; cc.loader.on Progress(onProgressCallback); // 执行分包加载... cc.loader.downloader.loadSubpackage(/* ... */); ``` 最后记得在不再需要跟踪进展之后解除绑定以免造成内存泄漏等问题: ```typescript cc.loader.off Progress(onProgressCallback); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值