Cocos2dx 3.0 实战之—— 重写《超级马里奥》其三 加入中文显示

在Cocos2dx项目中中文显示乱码是一件很蛋疼的事情,虽然这个在vs上是可以通过改变代码的Unicode格式解决的,但是难保在其他地方不出问题。


关于中文乱码问题,网上有很多解决办法,不过个人在这里推荐的是最简单最靠谱的解决办法,不但可以解决中文乱码问题,还可以顺便解决国际化问题。OK,直接看图


细心的亲们在前面一篇应该已经看到了,窗口上方中间的名字是乱码,明明我在代码中设置的是“超级玛丽”,如图


可得到想效果却是:



OK,这就是传说中的中文乱码。如何解决呢。这个问题曾经在一度困扰我良久。不过后来我看到这些资料:http://cn.cocos2d-x.org/tutorial/show?id=1633

之后发现,确实完美解决,这里给出我的源码:

Chinese.h

/**
 * 中文显示
 */
#ifndef _CHINESE_H_
#define _CHINESE_H_
#include <string>
#include <cocos2d.h>
using namespace std;
using namespace cocos2d;
std::string ChineseWord(const char* word);
#endif


Chinese.cpp

/**
 * 实现对zh_CN.xml的中文字符的显示
 */
#include "Chinese.h"
/**
 * 中文读取
 */
std::string ChineseWord(const char* word)
{
	ValueVector word_vec = FileUtils::getInstance()->getValueVectorFromFile("zh_CN.xml");
	auto word_map = word_vec.at(0).asValueMap();
	string wordValue = word_map.at(word).asString();
	return wordValue.c_str();
}

然后你需要到Resources目录下去创建一个名叫zh_CN.xml的xml文件然后写下如下代码


<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<array>
  <dict>
	  <key>game_name</key>
	  <string>超级玛丽</string>
</dict>
</array>
</plist>

然后保存,注意,这里需要保存为UTF-8格式。

然后我们就可以使用这个进行中文显示了。

比如在AppDelegate.cpp中加入#include "Chinese.h"

然后对中文显示的地方做如下修改

glview = GLView::create(ChineseWord("game_name"));


然后运行,便可以看见如下效果:


没错,中文问题得到解决,同样的,可以用此方法实现国际化,这里我就不多说了。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...