Cocos2d-x 3.1.1 學習日誌4--cocos2d-x解決中文亂碼問題的幾種辦法,cocos2dx權威指南
做個打飛機的遊戲,由於版本太新,網上基本沒有教教程,我的版本是cocos2d-x 3.1.1的,今天遇到cocos2dx中中文亂碼的問題。無奈只好Google百度尋求答案,明白了這個問題的緣由。因為cocos2d-x內部是以utf8處理文本的,而VS直接輸入時文本編碼為GBK,如果添加L標誌,則為Unicode編碼。
解決這個問題有三種辦法:
將原始碼檔案儲存為utf8編碼,不過由於編譯器的問題,這種方式會導致很多無法預測的問題
將字串用utf8編碼集中存到一檔案中,然後用代碼讀取這些字串來使用,這種辦法還能很好的支援多語言版本
使用字串時,先將其轉換為utf8編碼
我最終使用了第三種方法,第一種撇開不說,第二種實現起來比較麻煩,第三種則要方便很多。
//加這個函數,G2U,我自己寫的函數名。
glview=GLView::create(G2U("飛機大戰"));
//然後把這個函數加上
char* AppDelegate::G2U(const char* gb2312)
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}
//然後在標頭檔裡面加上函式宣告就可以了
char* G2U(const char* gb2312) ;
不懂的可以加我的QQ群: 239982941(一起學習cocos2dx)
最近在學cocos2d-x,看到已經出日文書了,不知道中文版的書要什時才出呀
樓主說的是Akihiro Matuura撰寫的第一本Cocos2D-X的日文教程吧,好像這書還挺暢銷的。不過中文版的目前已經有幾本了呀,目前我是極力推薦《Cocos2D-x權威指南》,因為這本書是我幾個做開發的朋友都推薦的,微博上也很多大神推薦,非常不錯的!而且有訊息說今年內會陸續出中文教程,樓主耐心等吧。
對於Cocos2D-X這遊戲引擎的幾個簡單問題,
1、理論上cocos2d-x官方表明支援的平台毫無疑問你都是可以進行移植的,這正是它跨平台的優勢所在。
2、cocos2d-x的跨平台特性體現在它是使用C++作為程式設計語言進行開發,並且提供了各個平台編譯啟動並執行解決方案。你無論在什麼開發環境下,都可以進行開發,你的編寫過程無非是用C++寫代碼邏輯。當然你最終想在各個平台部署,還要進行一些特殊處理。比如ios的你需要配置mac下的開發環境,安裝xcode,安裝認證等等,android你需要安裝NDK、ADT等等,我就不贅述了。具體過程網上搜教程一步一步來,大家都是這麼摸索過來的。先逮著一個你熟悉的開發環境和目標平台做,比如先用VS開發,編譯到安卓或者xcode開發運行到ios。