溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Win32游戲到Android平臺移植時必須解決的問題集錦

發(fā)布時間:2020-06-21 00:40:31 來源:網(wǎng)絡(luò) 閱讀:510 作者:googlingman 欄目:移動開發(fā)

這方面的問題很多,在目前網(wǎng)絡(luò)上很難找到滿足的答案。我在這里將把自己的一個游戲從WIN32到ANDROID移植過程必須面對和要解決的問題,列舉出來(有些是已經(jīng)得到回答的,有些還未解決)。

1,如何顯示自己的游戲程序圖標(biāo)

這個使用傳統(tǒng)的android平臺思路實現(xiàn)即可,即修改工程的proj.android\res路徑下drawable-hdpi、drawable-ldpi、drawable-mdpi、drawable-xhdpi下的icon.png文件。

注 意:一次試驗中我僅修改了drawable-hdpi和drawable-mdpi下的文件,而沒有修改drawable-ldpi下的圖標(biāo),結(jié)果在最終 的真機(Samsung I9100)上顯示是仍然是drawable-ldpi下的系統(tǒng)默認(rèn)的圖標(biāo)。因此,只有全面修改上面文件夾(有的文件夾可以為空)下的圖標(biāo)為一致的圖像文 件時才能達(dá)到目的。

2,中文字體的顯示

這個問題比較復(fù)雜,因為存在多種情況。讓我們來逐一討論。最主要的參考資源首先就是伴隨引擎的TESTCPP示例中的LabelTest部分。
值得注意的是,其中有幾個例子是有關(guān)于漢字顯示的,因為我們在本文中最關(guān)心的首先是在WIN32下顯示正常的漢字,然后在ANDROID平臺上也能正常地顯示漢字,
所以,這幾個例子需要認(rèn)真地研究。

例1:BMFontUnicode類。

完整代碼如下:


    CCDictionary *strings = CCDictionary::createWithContentsOfFile("fonts/strings.xml");
    const char *chinese = ((CCString*)strings->objectForKey("chinese1"))->m_sString.c_str();
    const char *japanese = ((CCString*)strings->objectForKey("japanese"))->m_sString.c_str();
    const char *spanish = ((CCString*)strings->objectForKey("spanish"))->m_sString.c_str();


    CCSize s = CCDirector::sharedDirector()->getWinSize();

    CCLabelBMFont *label1 = CCLabelBMFont::create(spanish, "fonts/arial-unicode-26.fnt", 200, kCCTextAlignmentLeft);
    addChild(label1);
    label1->setPosition(ccp(s.width/2, s.height/4*3));

    CCLabelBMFont *label2 = CCLabelBMFont::create(chinese, "fonts/arial-unicode-26.fnt");
    addChild(label2);
    label2->setPosition(ccp(s.width/2, s.height/4*2));

    CCLabelBMFont *label3 = CCLabelBMFont::create(japanese, "fonts/arial-unicode-26.fnt");
    addChild(label3);
    label3->setPosition(ccp(s.width/2, s.height/4*1));




上面代碼在WIN32下與ANDROID平臺上都可以正常顯示漢字。下面給出ANDROID平臺真機上結(jié)果的屏幕快照。

Win32游戲到Android平臺移植時必須解決的問題集錦

最近,我在網(wǎng)絡(luò)上花費了不少時間,最后基本認(rèn)定使用CCLabelBMFont 顯示文字是非常不錯的選擇(有些文章說CCLabelTTF存在效率問題,就先不使用了)。

那么,直接在上面Create方法的第一個參數(shù)中使用字符串,例如“中國”,可以嗎?NO?。。。。。。。。。。。。?br />這個數(shù)據(jù)必須為UNICODE編碼?。?!

經(jīng) 過分析,我選擇了先把游戲中要使用的文字保存在一個UNICODE編碼的文本文件中(后面還要說這件事),然后根據(jù)DEMO中所示,創(chuàng)建一個XML文件, 其格式 與DEMO中一致??聪旅娴睦?。注意:其中的UNICODE標(biāo)志(看一個DEMO中的XML文件內(nèi)容即可)。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>chinese1</key>
    <string>實際使用如下</string>
    <key>japanese</key>
    <string>非常奇怪</string>
    <key>spanish</key>
    <string>引擎頭文件</string>
</dict>
</plist>




有 了上面的XML文件,下面要使用字體生成器創(chuàng)建相應(yīng)的字體及圖像文件。我建議使用(我在WINDOWS下,針對ANDROID平臺)BMFont。就是 DEMO中LabelTest文件中多處指出的那一個(http://www.angelcode.com/products/bmfont/ (Free, Windows only))。

下載后使用它,你可以參考一篇文章(http://blog.csdn.net/aa4790139/article/details/8113197)。

但 是,上面的文章僅是入門級的,有幾個問題沒有指明。我使用其中的方法,可以顯示漢字了,但是漢字有黑色底紋。解決辦法是:把文章中Export Options處提到的8更改為24即可。當(dāng)然,使用EDIT-SELECT CHARS FROM FILE時,必須導(dǎo)入UTF-8格式的文本文件。

另 外,BMFont功能還是相當(dāng)不錯的。盡管它生成的.FNT文件支持多個(頁)png文件,但是就我目前使用的COCOS2D-X 2.0.2而言卻不支 持-僅支持一頁(一個PNG)情況。因此,如果你導(dǎo)入的TXT文件比較大,需要在Export Options窗口中把位置調(diào)整大一些(默認(rèn)是256X256),例如調(diào)整為256X512??傊阈枰獔D像調(diào)整到一個盡可能小但是又能夠存放下你想使 用的所有漢字的一個PNG文件內(nèi)。

其他的使用細(xì)節(jié)就不說了。

對于生成的PNG文件,你可以使用PHOTOSHOP這樣的工具,對文字進(jìn)行盡情加工。例如,DEMO中的金字也許就是這樣加工的。下圖給出了我的WIN32程序的一個快照(我的PS水平不好)。在ANDROID平臺上也是沒有問題的。

Win32游戲到Android平臺移植時必須解決的問題集錦

提示:選定PNG文件中的所有文字讓我費了一些腦筋,最后找到辦法是:選擇-色彩范圍-高光。


之后,使用例如最上面的編碼就可以顯示你自己的漢字了(BOTH WIN32 AND ANDROID?。。。?。


3,多分辨率顯示問題


4,快捷菜單與后退鍵的操作


在ANDROID平臺上,這個比較簡單。。。。。。

5,加入廣告技術(shù)


6,定制自己的游戲軟件標(biāo)題名稱



這個只需要修改res\values目錄下文件strings.xml中app_name的內(nèi)容即可,建議在Eclipse中完成。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI