Unity3d 微信小游戏 AB资源问题
简介
最近在做微信小游戏,因为对unity比较熟悉,而且微信也支持了用unity3d直接导出到小游戏的工具,所以就记录下这期间遇到的问题
微信小游戏启动时间主要受以下三点影响:
- 下载小游戏首包数据文件
- 下载和编译wasm代码
- 引擎初始化和首场景加载
从上面可以了解到,如果想让用户尽快的进入游戏,首包资源,代码量,首场景内容量 是影响比较大的因素,其中动态资源又是App和小游戏中都会考虑且很容易适配的方案
资源方案
App开发中资源更新经常会用到,unity提供的动态资源方案AssetBundle,这种方式也适用于unity导出的微信小游戏,但其中又有一些区别,但是微信小游戏提供了一套资源缓存方案,微信资源缓存方案,点击链接可以查看,总体来说如果按照它的规则比较方便,而且还做了资源更新,以及旧资源删除等功能
当然也可以用自己在App的更新逻辑去实现,以下主要是我用App的资源更新方式去实现资源更新在小游戏中遇到的问题,主要在于WebGL上无法访问设备本地文件系统,需要用到微信小游戏SDK提供的文件读写方式去替换之前的逻辑
UnityWebRequest.DownloadHandlerFile 失效问题
主要原因就是WebGL设备的读写已经发生改变,不能用DownloadHandlerFile写入到本地路径了,但是会在内存中存在,所以你可能会遇到下载完毕之后能用AssetBundle.LoadFromFile(path)能读到数据,但是下次运行就找不到文件了,它并没有真正的写到本地磁盘.
解决方案:不用DownloadHandlerFile,UnityWebRequest.isDone 之后用微信提供的读写api,写到本地缓存,如果你用DownloadHandlerFile,然后写入会报 NotSupportedException: Raw data access is not supported for asset bundles
WXFileSystemManager fs = WX.GetFileSystemManager();
CheckDirectoryExit(WriteFilesPath);//注意,如果文件夹不存在需要手动创建MkdirSync
fs.WriteFileSync(WriteFilesPath, www.downloadHandler.data);
加载AssetBundle
还是因为路径读写问题,不能用c#提供的读写api,比如Directory;File;Path.等这些都不能用了
AssetBundle.LoadFromFile(path)也不可用
WXFileSystemManager wxFileSystem = new WXFileSystemManager();
byte[] abMemory = wxFileSystem.ReadFileSync(path);
manifestAb = AssetBundle.LoadFromMemory(abMemory);
读取文本方式
// 读取文件内容fs.ReadFile(new ReadFileParam(){filePath = path,encoding = "utf-8",success = (res) =>{Debug.Log("read success :" + res.stringData);localfiles = res.stringData.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);},fail = (res) =>{Debug.LogError("read error----:" + res.errMsg);}});
还遇到一个问题就是UnityWebRequest.Get("")和new UnityWebRequest()的区别,之前基本上都用UnityWebRequest.Get(""),但这次写代码时误写了new UnityWebRequest(),导致访问资源成功,但是资源数据确没有,主要原因时UnityWebRequest.Get("")构建时会默认创建DownloadHandlerBuffer对象接收数据,而后者需要你自己构建
微信开发者工具,网络缓存问题
这个问题比较难搞,在真机上没有问题,只在微信开发者工具会遇到这个问题,我资源服务器上的内容已经改变,但是下载的数据还是旧的数据,我的解决方法是,如果清缓存不能解决,需要杀掉进程,然后重新打开,再清理缓存
相关文章:
Unity3d 微信小游戏 AB资源问题
简介 最近在做微信小游戏,因为对unity比较熟悉,而且微信也支持了用unity3d直接导出到小游戏的工具,所以就记录下这期间遇到的问题 微信小游戏启动时间主要受以下三点影响: 下载小游戏首包数据文件下载和编译wasm代码引擎初始化…...
Leetcode二叉树刷题
给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true public boolean isSymmetric(TreeNode root) {if(rootnull)return true;return compare(root.left,root.right);}public boole…...
如何给自己的网站添加 https ssl 证书
文章目录 一、简介二、申请 ssl 证书三、下载 ssl 证书四、配置 nginx五、开放 443 端口六、常见问题解决(一)、配置后,访问 https 无法连接成功(二) 证书配置成功,但是访问 https 还是报不安全 总结参考资料 一、简介 相信大家都知道 https 是更加安全…...
Vue路由跳转及路由传参
跳转 跳转使用 router vue 的路由跳转有 3 个方法: go 、 push 、 replace go :接收数字, 0 刷新,正数前进,负数后退 push :添加,向页面栈中添加一条记录,可以后退 replace &#…...
计算机网络常见面试总结
文章目录 1. 计算机网络基础1.1 网络分层模型1. OSI 七层模型是什么?每一层的作用是什么?2.TCP/IP 四层模型是什么?每一层的作用是什么?3. 为什么网络要分层? 1.2 常见网络协议1. 应用层有哪些常见的协议?2…...
时隔一年,再次讨论下AutoGPT-安装篇
AutoGPT是23年3月份推出的,距今已经1年多的时间了。刚推出时,我们还只能通过命令行使用AutoGPT的能力,但现在,我们不仅可以基于AutoGPT创建自己的Agent,我们还可以通过Web页面与我们创建的Agent进行聊天。这次的AutoGP…...
项目三:学会如何使用python爬虫请求库(小白入门级)
根据上一篇文章我们学会的如何使用请求库和编写请求函数,这一次我们来学习一下爬虫常用的小技巧。 自定义Headers Headers是请求的一部分,包含了关于请求的元信息。我们可以在requests调用中传递一个字典来自定义Headers。代码如下 import requests h…...
【热门话题】PyTorch:深度学习领域的强大工具
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 PyTorch:深度学习领域的强大工具一、PyTorch概述二、PyTorch核心特性…...
SQL注入sqli_libs靶场第一题
第一题 联合查询 1)思路: 有回显值 1.判断有无注入点 2.猜解列名数量 3.判断回显点 4.利用注入点进行信息收集 爆用户权限,爆库,爆版本号 爆表,爆列,爆账号密码 2)解题过程࿱…...
QT_day3
完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配…...
使用ADO.NET访问数据库
目录 访问数据库的步骤 1、建立数据库 2、设置链接参数 (1)web网页和数据库连接的方法一 (2)web网页和数据库连接的方法二 3、建立链接对象 4、显示数据库 5、数…...
SpringBoot的旅游管理系统+论文+ppt+免费远程调试
项目介绍: 基于SpringBoot旅游网站 旅游管理系统 本旅游管理系统采用的数据库是Mysql,使用SpringBoot框架开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 (1&…...
数据结构---线性表
1,顺序表实现---动态分配 #include<stdlib.h> #define InitSize 10 typedef struct {int *data;//静态分配int length;int MaxSize; }SqList; void InitList(SqList& L) {L.data (int*)malloc(InitSize * sizeof(int));//分配空间L.length 0;L.MaxSize…...
MySQL 8.0 字符集问题导致报错
报错: ### Error querying database. Cause: java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,COERCIBLE) MySQL 8.0引入了一些新的字符集和排序规则,并对现有的进行了改进。在MySQL 8.0中&#…...
单路高清HDMI编码器JR-3211HD
产品简介: JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品,该产品具有支持1路高清HDMI音视频采集功能, 1路3.5MM独立外接音频输入,编码输出双码流H.264格式,音频MP3/AAC格式。编码码率可调,画面质…...
分库,分表,分区,分片
MySQL: 是一个开源的关系型数据库管理系统,主要用于存储和管理数据。它提供了命令行接口, SQLyog: 是一个图形化的客户端软件,专门用于管理和操作MySQL数据库。 它提供了一个直观的用户界面,简化了MySQL数据…...
【详解算法流程+程序】DBSCAN基于密度的聚类算法+源码-用K-means和DBSCAN算法对银行数据进行聚类并完成用户画像数据分析课设源码资料包
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。 与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇, 并可在噪声的空间数据…...
java es相关操作
一.es 后期修改分片数量 在Elasticsearch中一旦索引创建后,分片的数量就不能直接更改。如果需要更改分片的数量,你需要按照以下步骤操作: 创建一个新的索引,并指定所需的分片数量。 将旧索引的数据复制到新索引中。 关闭旧索引…...
腾讯EdgeOne产品测评体验——开启安全防护,保障数据无忧
当今时代数字化经济蓬勃发展人们的生活逐渐便利,类似线上购物、线上娱乐、线上会议等数字化的服务如雨后春笋般在全国遍地生长,在人们享受这些服务的同时也面临着各式各样的挑战,如网络数据会不稳定、个人隐私容易暴露、资产信息会被攻击等。…...
机器视觉图形处理软件介绍
机器视觉图形处理软件介绍 一.VisionPro 康耐视公司推出的 系统,具有快速而强大的应用系统开发能力。可快速建立原型和易于集成 。具有高可靠性、硬件灵活性。VisionPro 提供了易于应用的原型、发展和应用。VisionProQuickStart 原型环境加速了强大机器视觉系统的…...
开发者知识管理工具CodingIT:架构设计与应用实践
1. 项目概述:一个面向开发者的“一站式”知识管理工具最近在整理个人技术笔记和项目文档时,我发现自己陷入了典型的“信息碎片化”困境:代码片段散落在Gist、笔记软件、本地文件甚至聊天记录里;项目文档要么是简陋的README&#x…...
OpenCrab:面向中文开发者的开源项目导航与协作平台架构实践
1. 项目概述:一个面向中文开发者的开源螃蟹?第一次在GitHub上看到opencrab-cn/opencrab这个仓库名时,我愣了一下。OpenCrab?开源螃蟹?这名字听起来既有趣又让人摸不着头脑。点进去一看,发现这并非一个关于海…...
书匠策AI:你的毕业论文“外挂“已上线,看完这篇你就懂了
各位同学们,我是你们的论文科普老朋友。 今天不讲格式、不讲开题报告怎么凑字数,咱们来聊一个能让你从"头秃"变成"头不秃"的神奇工具——书匠策AI。没错,就是那个官网 官网直达:www.shujiangce.com上让无数毕…...
初创团队如何利用Token Plan套餐控制大模型API开发成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Token Plan套餐控制大模型API开发成本 对于初创团队而言,在原型开发和产品迭代阶段,技术选…...
改进灰狼算法天线优化设计【附代码】
✨ 长期致力于灰狼优化算法、直线阵列天线、平面阵列天线、微带天线研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)Logistic-Tent双重混沌初始化与非…...
多物流机器人任务调度与路径规划【附程序】
✨ 长期致力于物流机器人、任务调度、路径规划、沙猫群算法研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)栅格-拓扑双层地图建模与任务分配…...
理想汽车AI组织架构重组
把公司拆成心脏、大脑和手脚——理想汽车这波AI组织架构重组到底在赌什么? 导读:李想用一场2小时的全员会,把一家年营收千亿的公司按人体器官逻辑重新组装。这不是比喻,这是组织结构图上的真实节点。从造车到"造人"&…...
RC 滤波截止频率与滤波原理详解
一、先搞懂最核心的问题:滤波到底 "滤" 的是什么?滤波不是 "切掉" 某个频率的信号,而是对不同频率的信号进行选择性衰减 **。**我们想要的信号(有用信号):让它尽可能无衰减地通过电路我…...
如何应对论文AIGC检测算法升级?2026实测5大降AI工具(附优缺点)
最近看了一些行业报告,AI工具在写作方面的普及率真的已经超乎想象了。 很多大学生在写论文时也都习惯用AI来辅助寻找灵感、提高效率。 与此同时,相关部门针对人工智能写作出台了一系列规定,各大学术检测平台也都在不断升级AIGC检测算法。 现…...
AI Agent社区平台架构实战:React 19 + Cloudflare边缘计算全栈开发
1. 项目概述:一个为AI Agent时代设计的社区平台如果你最近在折腾AI Agent,或者想找一些靠谱的AI工具,那你可能已经发现了一个痛点:信息太散了。教程、工具推荐、硬件配置、社区交流,这些内容散落在各个论坛、博客和社交…...
