Unity3d 游戏汉化之IL注入文本替换--木石世纪

近期下了个游戏叫木石世纪(Timber and Stone),沙盒游戏类,看着还不错.

搜了下游戏资料,有人求汉化可是因为是小众游戏,没人出汉化.看了眼是Unity3d的,既然是.Net的,仅仅要资源不是在资源包里,应该都还是蛮简单的.

刚開始做了个字符串替换,发现有些地方还是比較麻烦,还不如拿UnityEngine里面的GUI函数开刀,也就是有了这么一次简单的哦汉化过程.

首先写个简单的类用于注入

    public class TxtInjection
{
public static string DoInjection(string txt)
{
return txt + "X";
}
}

注入成功后,全部的被注入的字符串后面都应该出现一个X;

然后写个小的演示样例,用于IL參考:

        public static void Label(object position, string text, object style)
{
text = DoInjection(text);
LabelA(position, text, style);
} public static void LabelA(object position, string text, object style)
{ }

text = DoInjection(text);

就是我们改动字符串的地方了.

反编译看下IL

	0	nop
1 ldarg.1
2 call System.String UintyEngineGUIPatch.TxtInjection::DoInjection(System.String)
7 starg.s -> (1) text (System.String)

4行,然后查找Unity3d的GUI绘制函数,找了2个..

GUI.Box,GUI.Lable 用Reflector的IL注入插件直接手动写入IL.

执行看效果...

Unity3d 游戏汉化之IL注入文本替换--木石世纪

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSWNlU3VuOTYz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Unity3d 游戏汉化之IL注入文本替换--木石世纪

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSWNlU3VuOTYz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(眼下中文部分直接调用的百度在线翻译,勿拍砖...)

后面就简单了,输出全部文本到一个txt,然后使用

英文|中文

这种格式,自己主动或手动翻译...

晚点程序丢上来...

UnityEngine.dll
unitEngineGUipatch.dll
丢入 Timber and Stone v1.4\Timber and Stone_Data\Managed
以防万一,请备份源文件
strmap.txt 放入根文件夹...
启动游戏就可以 执行过程中strmap.txt 会产生界面上绘制过的新的字符串
编辑strmap.txt 保存后,切换下界面就可以看到效果
假设遇到新的未出如今strmap.txt,又一次打开就可以. 临时没时间进行翻译...愿意參加的小伙伴报名..
理论上支持未来随意版本号..
或者使用unity3d gui的其它游戏

点我下载:http://pan.baidu.com/s/1mgLuKUc

上一篇:FOR UPDATE SKIP LOCKED


下一篇:杭电2034——人见人爱A-B