AssetStudio Mobile 下载教程Android 上打开 Unity 资源、预览贴图与替换 Bundle 资源大家好这里是「代码简单说」。如果你平时需要分析 Unity 游戏资源应该比较熟悉AssetStudio。传统 AssetStudio 主要运行在 Windows 等桌面平台而这次介绍的AssetStudio Mobile是基于 AssetStudio 移植的 Android 端 Unity 资源浏览与贴图替换工具。它不仅可以在手机上打开.bundle、.unity3d、.assets等 Unity 资源还支持贴图预览、Mesh 预览、PNG 替换贴图、OBJ 替换模型以及 PNG/WAV/TXT/TypeTree 等资源导出。对于需要直接在 Android 手机上查看 Unity 游戏资源的人来说会方便很多。一、AssetStudio Mobile 是什么AssetStudio Mobile是基于 AssetStudio 移植的 Android 端 Unity 资源浏览与贴图替换工具。项目主要使用以下技术开发KotlinJetpack ComposeMaterial Design 3NDKJNIAssetStudio C# 核心移植其中Unity 资源解析核心进行了逐行 Kotlin 移植而纹理解码部分则通过NDK JNI使用原生 C 解码器以便处理 DXT、BC、ETC、ASTC、PVRTC 等纹理格式。二、AssetStudio Mobile 下载地址当前提供 Android APK 下载项目地址AssetStudio Mobile 下载点击下载原版 AssetStudioGitHub夸克网盘https://pan.quark.cn/s/2a14601e74f8下载 APK 后直接安装即可。三、AssetStudio Mobile 支持哪些 Unity 文件软件支持比较常见的 Unity 资源格式。1. AssetBundle包括.bundle .unity3d .assetbundle支持 UnityFS、UnityWeb/Raw 等 Bundle 类型。2. SerializedFile例如.assets也可以同时选择对应的.resS对于某些 Unity 游戏来说大型纹理和音频数据可能存储在独立的.resS文件中因此加载.assets时可以将对应的.resS一起选择。3. 压缩容器同时支持gzip brotli zip unitypackage所以遇到经过容器包装的 Unity 资源也可以直接尝试加载。四、如何使用 AssetStudio Mobile安装完成后打开软件可以看到资源加载相关入口。基本流程非常简单准备 Unity 游戏资源 ↓ 选择文件 / 加载文件夹 ↓ 自动解析 Unity 资源 ↓ 进入资产列表 ↓ 搜索 / 类型筛选 ↓ 打开资产详情 ↓ 预览 / 导出 / 替换五、选择文件加载 Unity 资源主页可以选择.bundle .unity3d .assetbundle .assets .zip .unitypackage部分文件可以一次选择多个。例如resources.assets resources.resS可以一起选择。对于已经剥离版本信息的资源如果需要指定 Unity 版本可以在加载之前填写类似2021.3.20f1这样解析过程可以使用对应的 Unity 版本信息。六、支持整个文件夹批量加载这是 AssetStudio Mobile 比较实用的功能之一。主页提供「加载文件夹」选择一个目录后软件会自动扫描其中的 Unity 资源不需要再一个个手动选择文件。扫描时会根据扩展名和文件头进行判断。支持识别bundle unity3d assetbundle assets zip unitypackage resS对于没有扩展名的文件还会进行文件头魔数检测例如UnityFS UnityWeb UnityRaw UnityArchive gzip部分特殊 Unity 容器也可以被自动识别。而普通媒体文件和文档则会被自动排除。七、批量加载为什么不会轻易 OOMAndroid 应用与桌面程序相比可使用的堆内存通常更加有限。因此 AssetStudio Mobile 在批量读取时加入了多层内存保护机制。文件数量限制目前单次最多加载5000 个文件这个限制主要用于防止误选择整个存储根目录等极端情况。真正决定能加载多少资源的核心因素仍然是设备可用内存 Unity 资源对象复杂度八、双阶段内存防护软件并不是简单按照文件大小计算内存。因为 Unity 资源读取以后构造出来的对象图通常会比原始文件大很多。因此加载阶段会分别检查第一阶段文件读取读取过程中定期检查真实堆使用情况。当堆占用超过安全阈值时会停止继续读取。第二阶段对象构造文件读取完成以后在对象构造前再次检查堆状态。这样可以避免文件本身不大 ↓ 解析以后对象数量暴涨 ↓ Android 堆被迅速占满 ↓ 应用 OOM / 闪退九、自动分装与无感加载AssetStudio Mobile 后续版本进一步优化了大量资源加载体验。用户实际上不需要关心内部是怎么分批处理的。正常操作就是选择文件夹 ↓ 等待扫描 ↓ 自动加载 ↓ 查看资产内部会根据内存情况对资源进行分装。例如文件 1 文件 2 文件 3 ……当当前驻留数据达到安全线之后旧对象会被驱逐同时保留轻量索引。因此最终用户看到的仍然是一份完整资产列表。十、磁盘暂存与按需加载这是后续版本比较重要的一项设计。某些资源由于内存限制不能一直保持在 RAM 中但软件不会直接把它从资产列表中删除。而是保留名称 类型 大小 PathID 来源文件等轻量信息。因此列表、搜索、筛选、统计依然可以正常使用。当用户真正点击某个资产时再从磁盘加载对应资源。也就是资产列表 ↓ 发现资源处于磁盘暂存状态 ↓ 打开详情 ↓ 只读取它所在的 Unity 文件 ↓ 解析该资产 ↓ 显示预览这可以明显降低大型游戏资源包对手机内存的压力。十一、资产浏览功能加载完成后会进入资产列表。可以按照资源类型进行筛选。例如Texture2D Sprite Mesh TextAsset AudioClip MonoBehaviour Material Shader也可以直接进行关键词搜索。对于 PathID 比较重要的资源还可以通过 PathID 定位。另外分类 Chip 支持长按置顶常用的资源类型可以放在更靠前的位置。十二、贴图预览AssetStudio Mobile 对 Texture2D 提供了比较完整的预览能力。支持DXT BC ETC ASTC PVRTC ATC Crunch Unity Crunch以及大量未压缩格式。可以处理DXT1DXT3DXT5BC4BC5BC6HBC7ETC1ETC2EACASTCPVRTCATC等纹理。十三、支持 Mipmap 查看对于带 Mipmap 的 Texture2D可以切换不同的 Mipmap Level。例如Mip 0 Mip 1 Mip 2 Mip 3 ……这样可以检查 Unity 游戏实际存储的不同分辨率纹理。十四、贴图缩放与超宽纹理查看贴图预览支持缩放。缩放范围25% ~ 800%同时会根据贴图尺寸进行自适应处理。对于很小的贴图会适当放大保证能够清楚观察像素。对于超宽图片则会尽量保证其高度具有可辨识性。超出视口以后可以横向、纵向移动查看。十五、Mesh 3D 预览除了贴图之外AssetStudio Mobile 还提供 Mesh 预览。软件并不依赖 OpenGL而是使用纯 Kotlin 软件光栅化实现基本的 3D 渲染。支持Z-Buffer 面法线 Lambert 光照 环境光 自动旋转 拖拽旋转打开 Mesh 后可以直接旋转模型观察。对于非常大的模型网格 40000 三角形程序还会自动降采样以保证移动设备上的操作流畅性。十六、SkinnedMeshRenderer / MeshFilter 预览除了直接打开 Mesh还可以在SkinnedMeshRenderer MeshFilter详情页面直接查看引用的 Mesh。软件可以解析m_Mesh对应的 PPtr 引用并继续找到实际 Mesh。详情中还可以看到骨骼数量 材质槽数量 混合形状权重 顶点信息 三角形统计并可以从关联资产中直接跳转 Mesh。十七、渲染器组件替换 Mesh对于SkinnedMeshRenderer MeshFilter还支持修改其引用的 Mesh。替换时原来的骨骼绑定 材质槽可以继续保持。即使 Mesh 位于其他文件中也支持处理对应的跨文件引用。十八、材质和 Shader 查看对于 Material、Shader 等资源可以查看结构化文本信息。这对于分析 Unity 项目的资源关系比较有用。例如可以进一步确认Material ↓ Shader ↓ Texture之间的引用关系。对于 MonoBehaviour也可以结合 TypeTree 查看对象数据结构。十九、资产导出AssetStudio Mobile 支持多种资源导出。Unity 资源导出格式Texture2DPNGSpritePNGMeshOBJAudioClipWAVTextAssetTXTMonoBehaviourTXTMaterialTXTShaderTXTTypeTreeTXT其他资产原始数据导出的时候会按照资源类型自动设置正确的 MIME 和文件后缀。例如Texture2D → .png AudioClip → .wav TextAsset → .txt避免出现内容和后缀不一致的问题。二十、批量导出资源在资产列表中长按进入多选模式。然后选择多个资产 ↓ 点击右上角「批量导出」 ↓ 选择输出文件夹 ↓ 自动按照类型导出例如Texture2D → PNG Sprite → PNG Mesh → OBJ AudioClip → WAV Material → TXT Shader → TXT MonoBehaviour → TXT Font → TTF即使其中某一个资源导出失败也不会影响其他资源。同时支持取消导出。二十一、批量导出中的内存优化批量处理大量贴图时图片解码可能产生比较明显的瞬时内存占用。因此软件会定期主动进行 GC。例如每处理一定数量的资产以后进行内存回收。这样可以降低大量 Texture2D Bitmap 解码 导出缓存同时存在导致的内存峰值。二十二、贴图替换功能AssetStudio Mobile 最大的特色之一就是直接集成了贴图替换能力。传统 AssetStudio 主要偏向于资源查看和导出而这个 Android 版本进一步加入了Texture2D → 新图片 → 重写 Unity 资源 → 重打包 Bundle完整流程。二十三、如何替换 Unity 游戏贴图进入Texture2D详情页面以后点击「替换贴图」然后选择新的PNG JPG图片。程序会根据原始 Texture2D 的情况重新编码。最终再保存新的 Unity 资源文件。二十四、贴图替换的完整处理链路整个过程大致是PNG / JPG ↓ TextureEncoder ↓ 生成 Mipmap ↓ 按照目标纹理格式编码 ↓ Texture2DObjectRewriter ↓ 重建 Texture2D 对象 ↓ 同步宽高 / 格式 / Mipmap / 数据大小 ↓ SerializedFileRewriter ↓ 重排对象数据区 ↓ 修复对象表 byteStart / byteSize ↓ BundleRepacker ↓ UnityFS 重新打包 ↓ 生成新的 .bundle / .unity3d / .assets因此不是单纯把 PNG 数据替换进去而是会同步修改 Unity SerializedFile 和 Bundle 相关结构。二十五、支持保持原始纹理格式目前支持保持多种原始 Texture2D 格式。例如RGBA32 ARGB32 RGB24 BGRA32 Alpha8 R8 RGB565 ARGB4444 DXT1 DXT5 ASTC 4x4 ASTC 5x5 ASTC 6x6 ASTC 8x8如果原始格式属于支持范围替换时可以尽量保持原格式。二十六、ASTC 贴图替换ASTC 是移动端 Unity 游戏中非常常见的纹理压缩格式。AssetStudio Mobile 专门实现了 Kotlin 版本的 ASTC LDR 编码器。支持ASTC 4x4 ASTC 5x5 ASTC 6x6 ASTC 8x8并可以根据原始图片类型保持RGB RGBA等对应格式。这样在替换移动端游戏贴图时可以避免因为转换为 RGBA32 而导致资源体积明显膨胀。二十七、尺寸不同也可以替换替换图片不一定要求和原始贴图完全相同尺寸。例如原图512 × 512 新图1024 × 1024也可以进行替换。软件会同步修改 Texture2D 对象相关字段。对于 DXT 类纹理如果新尺寸不符合压缩块要求例如不是 4 的倍数则会根据实际情况回退到 RGBA32。二十八、批量贴图替换如果一个游戏中有大量需要修改的贴图也可以直接批量替换。使用流程资产列表 ↓ 长按进入多选 ↓ 选择多张 Texture2D ↓ 选择图片文件夹 ↓ 自动进行名称匹配 ↓ 批量替换匹配过程中会忽略大小写 扩展名 部分分隔符差异Unity 的(instance)后缀也可以进行配对。遇到名称存在歧义时不会强行错误匹配。二十九、多个 Bundle 会如何保存批量贴图替换过程中如果选择的贴图来自多个容器程序会按照来源进行处理。单个容器一个容器 → 一个输出文件多个容器多个容器 → 分别处理 → 自动打包 ZIP这样方便一次性处理多个 Unity 资源包。三十、贴图方向修复移动版移植过程中纹理数据方向是比较容易出现问题的地方。Unity 使用的纹理数据行方向与 Android Bitmap / PNG 并不完全一致。因此在此前版本中部分贴图会出现上下颠倒后续版本统一通过PixelFlip进行处理。现在解码 Unity 底部序 → Android 顶部序 重新写入 Android 顶部序 → Unity 底部序因此可以形成完整的导出 ↓ 修改图片 ↓ 替换 ↓ 重新打开闭环。三十一、Unity Bundle 加密资源支持除了普通 BundleAssetStudio Mobile 还提供部分加密 Bundle 处理能力。例如UnityKHFS UnityKHNFS UnityKH1FS这些类型可以进行自动探测与处理。同时支持LZ4压缩清单和数据区。三十二、XOR / AES 解密支持对于部分自定义加密 Bundle还提供手动解密方式。例如XOR AES-ECB AES-CBCAES 支持128 bit 192 bit 256 bit可以使用 Hex Key 等方式指定参数。另外还支持根据文件头自动判断部分 XOR 加密情况。需要注意的是这类处理仅适用于你有权分析和修改的资源。三十三、加载大文件的安全机制为了降低移动端 OOM 风险软件会对单个文件进行预检查。目前超过768 MB的文件会在读取前进行提示并拒绝直接加载。另外单个资产解析失败不会直接导致整个任务崩溃。例如Asset A → 正常 Asset B → 解析失败 Asset C → 正常 Asset D → 正常程序可以继续处理其他资产。三十四、单文件异常隔离解析单个文件时采用独立异常保护。因此遇到损坏文件 加密文件 不支持文件 超限文件 异常资产 OutOfMemoryError等情况时可以记录失败原因然后继续处理其他资源。最终加载结果中会显示对应的失败信息。三十五、AssetStudio Mobile 的主要功能总结功能支持情况UnityFS Bundle支持UnityWeb / Raw支持.assets支持.resS支持.zip支持.unitypackage支持文件夹批量加载支持资产搜索支持类型筛选支持PathID 定位支持Texture2D 预览支持Mipmap 查看支持Mesh 3D 预览支持Material 查看支持Shader 查看支持MonoBehaviour 查看支持PNG 导出支持OBJ 导出支持WAV 导出支持TXT 导出支持TypeTree 转储支持PNG 替换贴图支持批量贴图替换支持ASTC 原格式替换支持Mesh 引用替换支持Unity 加密 Bundle部分支持批量导出支持大型资源内存保护支持三十六、软件适合哪些场景AssetStudio Mobile 比较适合以下情况Unity 游戏资源查看例如查看 Texture2D 查看 Sprite 查看 Mesh 查看 AudioClip 查看 Material 查看 ShaderAndroid 手机上直接分析资源不需要每次都把资源复制到电脑。可以直接在 Android 手机上选择 Bundle → 查看资源 → 预览贴图 → 导出游戏美化资源制作如果你需要制作自己的资源替换包可以利用导出原始贴图 ↓ Photoshop / Krita 等软件修改 ↓ PNG ↓ AssetStudio Mobile ↓ 替换 Texture2D ↓ 重新打包整个流程可以直接在移动设备上完成。三十七、开发者如何自己编译如果不想直接使用 APK而是希望自己修改源码可以自行构建。项目构建环境要求JDK 17 Android SDK 34 NDK 26 CMake 3.22Linux / macOS 环境可以设置exportJAVA_HOMEjdk17exportANDROID_HOMEsdk然后执行./gradlew assembleDebug生成 Debug APK。三十八、支持的 ABI项目当前支持arm64-v8a armeabi-v7a x86 x86_64最低 Android 版本Android 8.0也就是minSdk 26目标版本targetSdk 34其中移动设备建议优先使用arm64-v8a版本。三十九、项目目录结构项目整体结构比较清晰app/src/main/ ├── java/com/assetstudio/mobile/ │ ├── core/ │ │ ├── io/ │ │ ├── bundle/ │ │ ├── serialized/ │ │ ├── classes/ │ │ ├── texture/ │ │ ├── manager/ │ │ └── math/ │ │ │ ├── replace/ │ ├── export/ │ ├── ui/ │ ├── MainActivity.kt │ ├── MainViewModel.kt │ └── App.kt │ └── cpp/ ├── texture2ddecoder_jni.cpp └── decoder/其中core/负责 Unity 资源解析。replace/负责贴图替换和文件重写。export/负责资源导出。ui/负责 Jetpack Compose 界面。cpp/则负责 NDK 原生纹理解码。四十、AssetStudio Mobile 和桌面版 AssetStudio 的区别AssetStudio Mobile 并不是简单把桌面版程序搬到 Android 上。两者在底层实现方式上有比较明显的区别。文件访问方式Android 版本使用SAFStorage Access Framework而不是传统桌面文件系统目录扫描。同时通过回调方式按需读取外部.resS。TypeTreeAndroid 版本不依赖运行时代码生成。MonoBehaviour 使用内置 TypeTree 解析为树形文本。纹理解码移动版本增加了NDK JNI纹理解码方案以处理更多 GPU 压缩纹理。贴图替换移动版本内置完整的图片编码 → Texture2D 重写 → SerializedFile 重写 → Bundle 重打包流程。四十一、实际使用时的建议第一次使用时可以先找一个普通的 Unity Bundle 测试。推荐流程① 安装 AssetStudio Mobile ② 选择一个 .bundle / .unity3d ③ 进入资产列表 ④ 筛选 Texture2D ⑤ 打开贴图预览 ⑥ 尝试导出 PNG ⑦ 再测试 Mesh / AudioClip ⑧ 确认资源解析正常后再进行替换如果一次加载的是大型 Unity 游戏资源目录则建议使用「加载文件夹」让软件自动进行资源筛选和内存管理。四十二、总结AssetStudio Mobile可以看作是 AssetStudio 在 Android 平台上的一次比较完整的移动端移植。它不仅解决了Android 打开 Unity Bundle这个问题还进一步加入了Texture2D 预览 Mesh 3D 预览 批量加载 批量导出 PNG 替换 批量贴图替换 ASTC 原格式编码 Bundle 重打包 加密 Bundle 处理等能力。尤其是后续版本加入的统一资产列表 索引与对象分离 磁盘暂存 按需加载 动态内存预算让它更适合 Android 设备处理大型 Unity 游戏资源。下载地址AssetStudio Mobilehttps://pan.quark.cn/s/2a14601e74f8安装 APK 后即可开始使用。说明Unity 资源的查看、导出和修改可能涉及软件版权、游戏服务条款或其他法律/授权要求。建议仅处理自己拥有或明确获得授权的项目及资源。