UnityPy:5个实用技巧让Python轻松提取Unity游戏资产 🎮
想要用Python提取和编辑Unity游戏中的各种资源吗?UnityPy这个强大的开源Python工具绝对值得一试!它基于AssetStudio开发,支持Python 3.8及以上版本,让你能够轻松处理Unity项目中的各类资产文件。
🛠️ 核心功能概览:不止是提取那么简单
UnityPy的功能远不止简单的资产提取。它支持从Unity项目中提取多种类型的资源,包括纹理、精灵、文本资产和MonoBehaviour等。更重要的是,它还允许你直接编辑这些资产,比如修改纹理图片或调整文本内容。
通过typetree结构,所有对象类型都可以以其原生形式进行编辑。这意味着你可以像操作Python字典或对象一样,直接修改Unity资产的数据结构。
📦 快速安装指南:两种方式任你选择
通过PyPI安装是最简单的方式:
pip install UnityPy
从源码安装也毫不复杂:
git clone https://gitcode.com/gh_mirrors/un/UnityPy
cd UnityPy
python -m pip install .
注意事项:Windows用户需要安装Visual C++ Redistributable来支持brotli依赖。如果使用较新的Python版本,可能需要自行编译UnityPy的C依赖。
💡 实战示例:批量提取纹理和精灵
以下是一个实用的代码示例,展示了如何批量提取Unity项目中的纹理和精灵资源:
import os
import UnityPy
def extract_game_assets(source_folder, output_folder):
for root, dirs, files in os.walk(source_folder):
for filename in files:
file_path = os.path.join(root, filename)
env = UnityPy.load(file_path)
for obj in env.objects:
if obj.type.name in ["Texture2D", "Sprite"]:
data = obj.parse_as_object()
output_path = os.path.join(output_folder, f"{data.m_Name}.png")
data.image.save(output_path)
这个示例会遍历指定文件夹中的所有Unity资产文件,并将找到的纹理和精灵导出为PNG格式。
🔧 高级编辑技巧:修改资产内容
UnityPy真正强大的地方在于它的编辑能力。你可以使用两种方式来修改资产:
通过字典修改:
raw_data = obj.parse_as_dict()
# 修改字典内容
obj.patch(raw_data)
通过对象类修改:
instance = obj.parse_as_object()
# 修改对象属性
instance.m_Name = "新的资源名称"
obj.patch(instance)
🚀 最新功能更新:更稳定更强大
根据项目更新日志,UnityPy 1.20版本带来了多项重要改进:
- 类型提示全面优化:提供更好的代码补全和错误检查
- 自动生成类结构:使用生成的类存根替换硬编码的类,确保更好的兼容性
- TypeTree重构:采用分层结构替代扁平结构,提升处理效率
- 导出器增强:扩展了Sprite网格支持,自动解决一些切割问题
📋 支持的主要资产类型
纹理资源(Texture2D):
- 直接转换为PIL图像对象
- 支持编辑和重新保存
精灵资源(Sprite):
- 自动合并纹理和alpha通道
- 比大多数其他提取器更智能
文本资产(TextAsset):
- 支持普通文本和二进制数据
- 灵活的编码处理
MonoBehaviour:
- 处理自定义类实例
- 支持类型树生成
⚙️ 配置与定制:满足个性化需求
UnityPy提供了丰富的配置选项:
Unity CN解密:支持中国版Unity的资产包加密功能
UnityPy.set_assetbundle_decrypt_key("你的密钥")
自定义压缩算法:支持非标准压缩格式的处理
自定义文件系统:基于fsspec的文件系统抽象,支持各种存储后端
🎯 使用建议与最佳实践
由于UnityPy仍在积极开发中,建议在使用时注意版本管理。你可以在代码中添加版本检查:
if UnityPy.__version__ != '1.9.6':
raise ImportError("检测到不兼容的UnityPy版本,请使用1.9.6版本")
💎 总结:为什么选择UnityPy?
UnityPy作为一款基于Python的开源工具,为Unity资产处理提供了简单而强大的解决方案。无论你是游戏开发者、逆向工程师还是数据分析师,都能从中受益。它的双重功能——提取与编辑,加上对多种Unity版本的良好支持,使其成为处理Unity游戏资产的理想选择。
记住,使用UnityPy进行商业项目时,建议向慈善事业捐赠或赞助该项目,以支持开源社区的持续发展。
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/gitblog_00505/article/details/155416092



