如何解压Unity WebGL游戏的UnityWebData1.0资源包

如何解压Unity WebGL游戏的UnityWebData1.0资源包

什么是 UnityWebData

UnityWebData 文件是在 WebGL 游戏中与 WebAssembly 文件一起加载和使用的文件,主要是组合所有资产(Asset)、资源(Resource)和元数据(Meta)文件的文件。

UnityWebData的结构体

本节介绍基于UnityWebData1.0的二进制文件的结构进行介绍。

需要注意:int值必须以Little Endian方式读取。

文件头 (File Header)

字段名 长度(字节) 类型 描述
文件签名 16 string "UnityWebData1.0\0"
文件体偏移 4 int 整个列出文件的起始位置,与第一个文件的位置相同

文件信息头 (File Information Header)

该区块紧跟在文件头之后,处于文件体之前。

它是一张文件索引表,记录了文件读取的偏移量,文件名等信息,表项的字段如下:

字段名 长度(字节) 类型 描述
文件偏移量 4 int 文件的起始偏移量
文件长度 4 int 文件大小
文件名长度 4 int 文件名长度
文件名 n string 文件名

文件体 (File Body)

文件索引表后面紧跟着的就是资源文件了。如果要读取某一个文件,可以先读取获取其在标头中的偏移量,然后从该位置读取到标头中记录的文件大小的文件数据。

使用工具

经过我的测试,有两个比较好使:

UWDTool

安装:

bash 复制代码
pip install uwdtool

解包:

bash 复制代码
python UWDTool.py <Control Option> [-i input_path] [-o output_path]

unityweb

安装:

bash 复制代码
go install github.com/jozsefsallai/unityweb/cmd/unityweb@latest

解包:

bash 复制代码
unityweb unpack -i ./webdata.data -o ./unpack

参考资料

相关推荐
飞起的猪39 分钟前
【虚幻引擎】UE5独立游戏开发全流程(商业级架构)
ue5·游戏引擎·游戏开发·虚幻·独立开发·游戏设计·引擎架构
北冥没有鱼啊10 天前
UE 像素和线框盒子 材质
c++·ue5·游戏开发·虚幻·材质
大飞pkz11 天前
【Unity】使用XLua进行热修复
unity·c#·游戏引擎·lua·游戏开发·xlua·lua热修复
工藤新一¹12 天前
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 19)
开发语言·c++·游戏引擎·游戏开发·sdl
大飞pkz15 天前
【Unity】使用XML进行数据读存的简单例子
xml·unity·c#·游戏引擎·游戏开发·数据读写
大飞pkz15 天前
【Unity】如何解决UI中的Button无法绑定带参数方法的问题
ui·unity·游戏引擎·游戏开发·开发记录·button绑定
大飞pkz15 天前
【Unity】使用LitJson保存和读取数据的例子
unity·游戏引擎·游戏开发·数据保存和读取·游戏中的数据处理·类似jsonunility
大模型铲屎官16 天前
Unity C# 与 Shader 交互入门:脚本动态控制材质与视觉效果 (含 MaterialPropertyBlock 详解)(Day 38)
c语言·unity·c#·交互·游戏开发·材质·shader
Thomas游戏开发17 天前
Unity3D Timeline扩展与自定义事件处理
前端框架·unity3d·游戏开发
龙智DevSecOps解决方案18 天前
CI/CD解决方案TeamCity在游戏开发中的应用价值与优势分析
ci/cd·游戏开发·jetbrains·持续集成·teamcity