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.

執行看效果...


(眼下中文部分直接調用的百度在線翻譯,勿拍磚...)

后面就簡單了,輸出全部文本到一個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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM