-
-
[原创]unity引擎游戏汉化步骤详解
-
发表于:
2014-8-19 11:34
45436
-
unity引擎做的大型网络游戏越来越多,引入到国内,汉化也成了一个重要的需求。本文用《使命召唤》为例讲解
obb下载地址:http://pan.baidu.com/s/1kTzFZUZ
apk下载地址:http://pan.baidu.com/s/1o62rIie
安装方法请在网上搜索,不再赘述。
1. apk对obb的校验
如果出现闪退,其原因是apk和obb不配套。不配套的意思是apk在加载obb的时候会对obb做一个校验,并且将算出来的校验值放在apk压缩包a.apk\assets\bin\Data\settings.xml中的
<bool name="597b0f95be55e09c1a6214f68d189683">True</bool> 字段,使用
工具:http://pan.baidu.com/s/1c0s2Jra (需要javaSDK1.7 源码和字节码)
用obb路径作为参数计算出校验值,放入apk中,重新签名,就可以使用了。这时使用的英文版obb,接下来我们需要将它汉化。
2.汉化资源
首先我们得知道我们最关心的游戏文本,包括对话,提示,按钮文字都放在obb里面,obb其实一个压缩包,用解压软件打开,里面有很多文本,使用国外开源项目disunity(使用方法请自行搜索)可以将资源文件解压出来。disunity作者在网上提供的源码不能够直接编译,笔者整理了一个可以在eclipse调试运行的版本
下载地址:http://pan.baidu.com/s/1sjv0abb
感谢disunity作者的辛勤工作,unity资源文件有它固有的格式,且unity不是开源引擎,研究摸索它的格式需要超乎常人的耐心和毅力,具体文件格式不再赘述,请参看提供的disunity可以调试代码用加压出来的obb资源文件一边调试,一边掌握学习。主要的数据结构处理的类为:
AssetHeader TypeTree ObjectPathTable AssetRefTable
学习完unity资源文件格式以后,我们需要修改它的文字,改成中文,那就需要将解压出来的资源,修改以后,再打包回去。很可惜disunity作者没有提供的这样的功能。
怎么办???
DIY吧。
我们将学习到的unity资源文件格式(它是一种递归的定义)自我解析成目录和文件的形式(目录和文件也是一种递归结构),文件为基本类型,目录为可以递归的复合类型。这样我们把资源文件的内容以文件的形式存放好了,将需要修改的文字信息修改,然后按照unity资源文件格式打包回去,替换到obb里面对应的文件,通过工具的计算修改apk里面的校验码。应该就可以使用了。
但是,图片显示的是空白? 为什么??
3. 制作FONT
原来unity使用了字体文件,它也是一个unity资源文件,是一张图片(附件AgencyFB_24pt.rar)它是一个tga格式的图片,使用2345图片查看器可以打开。还有一个文本指示文字的坐标,宽高等信息,当需要显示“A”的时候,unity会根据这个txt文本截取图片的一小块显示到对应的位置,这样就就可以看见字了。我们需要汉化,需要加入汉字,但是这张图片上没有我们需要的信息,于是我们需要用到一个工具BMFONT
下载地址:http://pan.baidu.com/s/1mgmgMlM 它的使用方法可以在网上搜索。
可以将我们自己的汉化文本放入软件生成图片和txt坐标信息文件。需要注意的是,图片请选择tga格式。
4. 将tga和txt放入unity资源文件
找到obb中对应的FONT资源文件,用2中的方法解压成目录和文件的形式,取出tga图片的像素信息替换掉文件中的像素信息,测试中发现依然显示为空白,后来经过研究发现原因是BMFONT生成的图片和unity资源文件的图片是上下颠倒过的,(虽然用2345查看器都显示的一样,原因是BMFONT生成图片第18个字节为2,disunity加压出来为1), 所以BMFONT的像素点需要上下颠倒一下,然后替换掉。去掉头部信息,只保留像素信息,需要注意的是,通过2中解析出来的字段里面有诸如图片大小,图片长度,图片宽度等信息,请参考disunity源码,相应更改这些信息,注意文件存储大小端,千丝万缕,错一丁点儿都可能不会成功。
将txt中的字体信息修改为解压出来的字体信息,否则将错误,比如系统的是AgencyFB_24pt ,我们自己做的是微软雅黑,那么将微软雅黑改成AgencyFB_24pt,将txt替换掉。
替换掉obb里面的文件,修改apk的校验码,安装apk,当当当当,终于汉化成功了!!!!
结束语:
国内有很多汉化组织,可是汉化资料却非常少。时间和写作有限,许多技术细节没有聊到,只写了一个大致的方向和步骤,也可能会存在一些错误,欢迎指正,联系方式:646535763@qq.com
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)