2012年1月30日 星期一

unity中文字顯示




最近,需要在畫面上呈現中文按鍵、指引文字,找了找幾種可能的Solution。而有了以下的方法跟大家分享。最後採用的方法是將中文字儲存在檔案中,讀取後存到string陣列中,便可以直接引用呈現在畫面上。

實際施行方法如下所示:
以下內容僅針對C#開發為主。在程式碼中,不論是在註解中或是設定給string的變數中使用到中文字,都會造成編譯的錯誤而顯示"Parsing Error"。所以我們需要尋找其他解決方法,而將中文字存到檔案中,再讀取存到string陣列是目前想到較為直覺的方式。於是我們寫了以下的程式碼
        StreamReader m_sr=new StreamReader(fname);......
成功的通過編譯了,但將讀取到的值print出英文、符號、數字都沒有問題,但中文部分仍是亂碼。

接著改變encoding的方法,並將程式碼做了以下的修改。

StreamReader m_sr=new StreamReader(fname,System.Text.Encoding.Default);
windows2000後,檔案使用unicode編碼,但文字檔仍有ansi等方式編碼。增加參數System.Text.Encoding.Defaultg是指依照系統預定的編碼方式來讀取檔案。
再編譯一次。



成功了!!讀取成功之後,將該字串陣列的值套用到GUI Texture,以及GUI Button上都能順利的顯示。



後記,有人說:
  1. 只要將檔案存成UTF8即可?在JS中使用中文,無論是註解或是字串變數都沒有問題。但在C#中即使是確認另存UTF8。上述狀況仍然存在。即使用投機的方式編譯過了,呈現到畫面上仍是亂碼。
  2. 用JS存中文,C#去引用。對岸有人提到這個方法,需要以GameObject.SendMessage。或是將CS以及JS的程式碼放在相同目錄內即可。(來源)
  3. 使用EZGUI可行
    ERIC大就是使用這個方法。只是EZGUI目前已經飆到200美金。除非原先已經需要該套件,只為了中文問題使用他就成本而言似乎太高。

小編推薦:
如果你還是對中文有所疑惑,不訪看看這篇大陸高手“死貓”的 “Unity中的中文顯示(一):你好,Unity”吧!



(photo credit: ms. fion cc)
作者: Ray ,
Email:ray@resyncmed.com,
Blog:http://raychen.org

沒有留言:

張貼留言