• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
            隨著游戲國際化的發展,很多游戲都會在多個國家發行,那么其中有一個很重要的工作就是游戲的本土化,包括里面的文字,畫面,情節等等都要符合該國的語言和文化以及法律等等。那么在NGUI中,我們的本土化最主要的就是語言的顯示。那么,在該教程中,我將根據NGUI的官網教程,實現英文和中文的轉換(我們要摒棄那個好像是德文的例子,呵呵,那個德國國旗暫時不改了,等說道制作altas再來了解)。

            首先先制作一個窗口背景,我這里只用簡單的窗口來表示,不關注美術方面的問題,我表示這個界面做得有點丑了!在這里有兩點要注意,在創建每一個組件的時候,其Font參數為3699Font字庫(該字庫點擊下載3698font.unitypackage導進Unity中就好了),接著,每一個Label的z軸都要稍微向前平移一些,不然會消失。那個下拉菜單的Option設置成Language,如圖所示


            1.         接著創建兩個txt文件,命名為English.txt和Chinese.txt。我們將從這兩個txt文件中獲取文字描述。我建議不要用monodevelop編輯器來操作,因為它支持中方字體實在太糟糕,我選用UltraEditor編輯器來做,有人說動用visualStudio,這樣有點大材小用了。
            English.txt文件內容如下:
             
                

            Flag = Flag-US
            Language = English
            English = English
            chinese = 中文
            Info = Localization example
            Sound
            Music
            Desc = English localization
            Paragraph = This example shows how to implement localization using NGUI. In order to localize a widget, simply attach [000000]UILocalize[-] script to it. The script will localize the sprite if it's a [000000]UISprite[-], or the text if it's a [000000]UILabel[-]. If you want to localize something else, just implement the [000000]OnLocalize[-] function. Either way, the actual data is defined via text assets specified on the [000000]Localization[-] script which must be present in the scene.
               

            Chinese.txt內容如下:
            Flag = Flag-FR
            Language = 中文
            English = English
            Chinese = 中文
            Info = 本土化示例
            Sound = 音效
            Music = 音樂
            Desc = 中文本土
            Paragraph = 《老人與海》寫的是老漁夫桑地亞哥在海上的捕魚經歷,描寫老人制服大魚后,在返航途中又同鯊魚進行驚險的搏斗,然而作品中的形象卻具有很強的象征意蘊。他用大馬哈魚象征人生的理想和人類作為生命本身所不可避免的所具有的欲望,用鯊魚象征無法擺脫的悲劇命運,用大海象征變化無常的人類社會,而獅子則為勇武健壯,仇視邪惡,能創造奇跡的象征,桑地亞哥則是人類中的勇于與強大勢力搏斗的“硬漢子”代表,他那捕魚的不幸遭遇象征人類總是與厄運不斷抗爭卻無論如何都無法試圖去改變命運。
               

            這兩個txt文件先留著。創建一個空游戲對象,命名為Localization,并為其添加一個Localization組件(Component->NGUI->Internal->Localization)。打開該組件,把Starting Language設置成English,Languages中的size設置成2,把english.txt賦值給Element0,把chinese.txt賦值給Element1。如圖所示

            為每個Label(除了PopupList中的Label)添加一個Localize組件(Component->NGUI->UI-> Localize),打開該組件,可以看到該組件下面有一個參數為Key,這個參數就是用來設置關鍵字的,也就是在txt中“=”號前面的名稱。我們把這些label一一中的Key設置成我們需要的關鍵字(Voice和Music的Label只要添加這個組件,不用為它的Key賦值),例如如圖所示

            選擇PopList,為其添加一個LanguageSelection組件(Component->NGUI->Interaction-> Select Language)。現在點擊播放試試,可以看到,已經可以在兩個字體之間轉換了

            現在只剩下國旗沒換了,選擇國旗的Sprite,也為其添加一個Localize組件,設置其key為Flag。這些key都和txt文件中的key一一對應的。點擊播放,ok,成功。
            現在剩下最后一個問題,當你選擇那個下拉菜單時,文字會消失掉,通過觀察發現,下拉菜單在點擊之后會新建一個名為Drop-down List的新游戲對象,如圖所示

            選擇里面的label,會發現,那些label的z軸都在0的數值上,我們前面已經提到,如果要顯示中文字體,需要把這些label的位置往外拉出一些,在該例子中將成為負值。我本來想修改下它的源代碼,后來發現,只要把窗口的背景往后挪一些就ok了,好,那么我們把這個窗口的背景往后挪1個單位,如圖所示


            Ok,問題解決!

            還有,我看下拉菜單里面那個chinese太礙眼了,如果那些對英文一竅不通的人,都不知道chinese到底是什么東西,所以,我索性把chinese.txt文件名改成”中文.txt”(沒雙引號的,不要忘了把改完名的txt文件重新復制給Localization中的element1)。哈哈,居然這樣也可以,最后效果如下
            93精91精品国产综合久久香蕉| 久久久久国色AV免费观看| 精品国产青草久久久久福利| 久久精品中文字幕一区| 人妻精品久久无码区| 久久久久久亚洲精品不卡| 亚洲午夜久久久影院| 国产L精品国产亚洲区久久| 久久亚洲AV无码精品色午夜| 国产三级久久久精品麻豆三级| 天天综合久久一二三区| 青青草国产精品久久久久| 国产激情久久久久久熟女老人| 国产成人精品久久综合 | 成人国内精品久久久久一区| 久久91精品综合国产首页| 国产精品女同久久久久电影院| 欧美亚洲日本久久精品| 久久er热视频在这里精品| 无码AV波多野结衣久久| 久久亚洲AV成人无码软件| 久久伊人影视| 久久免费国产精品| 久久久久国产一区二区| 久久久久国产| 欧美激情精品久久久久久| 国产精品99久久精品爆乳| 91精品国产高清久久久久久io | 久久精品卫校国产小美女| 亚洲精品国精品久久99热| 久久影视国产亚洲| 久久久久久亚洲精品不卡| 久久青青草原亚洲av无码| 久久久久99精品成人片| 色悠久久久久久久综合网 | 99久久久精品免费观看国产| 久久人妻无码中文字幕| 久久www免费人成看片| 亚洲国产精品一区二区久久hs| 性欧美大战久久久久久久久| 久久久精品人妻一区二区三区四|