• <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)。哈哈,居然這樣也可以,最后效果如下
            国产精品美女久久久m| 欧美丰满熟妇BBB久久久| 99久久精品免费观看国产| 日本精品久久久中文字幕| 久久亚洲中文字幕精品一区| 亚洲国产成人久久精品99 | 国产香蕉久久精品综合网| 午夜精品久久久久久久| 久久e热在这里只有国产中文精品99 | 香蕉久久AⅤ一区二区三区| 亚洲AV无码久久精品成人| 四虎国产精品免费久久久| 久久午夜福利无码1000合集| 国产成人久久精品麻豆一区| 久久人妻少妇嫩草AV无码专区| 久久精品国产一区二区三区| 久久国产精品99精品国产| 亚洲国产一成久久精品国产成人综合| 久久久噜噜噜www成人网| 久久香综合精品久久伊人| 老司机午夜网站国内精品久久久久久久久| 久久男人Av资源网站无码软件| 天天综合久久一二三区| 久久精品18| 久久久久久毛片免费看| 伊人色综合久久天天| 久久99精品久久久久久| 久久精品人人做人人爽97| 天天爽天天狠久久久综合麻豆| 一级A毛片免费观看久久精品| 久久播电影网| 天天综合久久一二三区| 久久99国产精品久久99小说| 亚洲精品午夜国产va久久| 无码精品久久一区二区三区| 久久国产视屏| 久久狠狠色狠狠色综合| 漂亮人妻被中出中文字幕久久 | 亚洲国产精品无码久久一线| 99久久久精品免费观看国产| 久久国产精品99精品国产987|