cocos2dx3.0中显示中文

本文介绍了在Cocos2d-x 3.0中如何显示中文,包括通过读取utf-8编码的plist文件来显示中文字符串的方法,以及Cocos2d-x自带的显示中文例子。在实际操作中,需要注意文件的编码格式,如VS2012创建的默认编码可能与Cocos2d-x不匹配,需要进行转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写个test的例子,想在menu的item上显示中文,但是直接写中文,显示不能,所以查了一下资料,网上有说利用iconv库实现的,做一次转码,但是感觉只是在menu上显示个中文而已,其实没必要,所以这部分就没做,另一种方法就是把要显示的中文写到一个plist文件中,该plist文件时utf-8编码,然后读取plist文件来显示。

plist中的内容如下:(注意这个文件的编码格式一定要保存为utf-8,不然还是读不出来)

<!--?xml version="1.0" encoding="UTF-8"?-->
 
<plist version="1.0">
    <dict>
        <key>test_id</key>
        <string>测试字符串</string>
    </dict>
</plist>


程序代码如下:

    TTFConfig ttfConfig("fonts/wt021.ttf",28,GlyphCollection::CUSTOM);

    Dictionary* dic = Dictionary::createWithContentsOfFile("test.plist");
    CCString* strchinese = (CCString*)dic->objectForKey("test_id");

    Label* pLabel = Label::createWithTTF(ttfConfig, strchinese->getCString(), TextHAlignment::CENTER);

这样就可以了。

多提一点,将文本保存到一个配置文件里是个好习惯,因为文本变动相对还是比较频繁的,所以要尽量避免这种变动带来的重新编译,而且修改文本相对也较容易些。

===============================================================================================================

其实cocos2dx中提供了显示中文的例子,例子的代码如下:

LabelTTFUnicodeChinese::LabelTTFUnicodeChinese()
{
    auto size = Director::getInstance()->getWinSize();
    // Adding "啊" letter at the end of string to make VS2012 happy, otherwise VS will generate errors  
    // like "Error 3 error C2146: syntax error : missing ')' before identifier 'label'"; 
    TTFConfig ttfConfig("fonts/wt021.ttf",28,GlyphCollection::CUSTOM, "美好的一天啊");
    auto label = Label::createWithTTF(ttfConfig,"美好的一天啊", TextHAlignment::CENTER, size.width);
    label->setPosition(Point(size.width / 2, size.height /2));
    this->addChild(label);
}

但是我移植到我的项目中一直显示不出来,我猜应该是我文件格式的问题,在VS2012中修改文件的编码格式在这个菜单里:


这个选项,cocos2dx3.0的文件格式是


而vs2012默认创建的是GB2312,代码页936,所以如果不修改这个编码格式的话,需要进行编码转化才能正常显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值