近期下了個游戲叫木石世紀(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.
執行看效果...


(眼下中文部分直接調用的百度在線翻譯,勿拍磚...)
后面就簡單了,輸出全部文本到一個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的其它游戲
