阅读提示
- 加???表示可能描述不准确,或不太确定细节。
- 用词不准确的地方比较多,描述不严谨的地方比较多
- 可能理解都是错误的,抛砖引玉吧
- cocos2d-x 版本:cocos2d-x 3.3
- 转载或引用要注明出处地址:“”
基本知识
- cocos2d-x的Label是文字显示的基本类???其它文字显示类,是以这个为基础???
- cocos2d-x支持SystemFont、TTF、BMFont、CharMap几种文字创建方式(写文字信息到纹理)。
- 在创建好文字后,TTF、BMFont、CharMap是相同的绘制流程???SystemFont区别于前三个。
- SystemFont生成的文字纹理不可共用???属于一个Label对象对应一个单独的纹理块???
- TTF、BMFont、CharMap,就每个类型,只要是相同的文字配置,就共用文字纹理块,属于多个Label对象共用一个文字纹理块。
- TTF文字,会默认创建一个512*512的纹理,在实际显示文字时,判断纹理上是否有对应文字信息,如果没有,从ttf字体文件,取对应文字信息,写到纹理空缺位置,并且记录文字在纹理的位置区域,如果一个纹理写满,再创建一个新纹理继续写。
- BMFont、CharMap根据图片创建纹理,如果图片上都是字,那么生成的纹理上也都是字了,没有写文字信息到纹理这个操作。
- BMFont有配置文件,用来记录每个文字在纹理上的区域。
- CharMap是根据ASCII字符来确定纹理上的文字区域???所以文字显示只覆盖ASCII表。
- BMFont是直接根据图片尺寸创建纹理???如果文字信息比较多,图片的尺寸比较大,超过了纹理大小的限制就会失败,看另一个引擎,只是把文字图片加载到内存,用时,根据需要拷贝对应区域像素信息到纹理。
- 采用那种字体,要根据游戏实际需求。没有优劣之分,只有是否合适,可以在下面’对比列表‘看到一些分析。
游戏文字
游戏中用到的文字基本呈零散的方式出现,比如名字,像rpg游戏,显示100个生物,每个生物头上顶一个名字,这些显示的名字就是一个个零散的字符串。物品商店,显示零散文字可能最多,比如每个商品的名字、价格、等级、种类、简单描述、存量等。游戏中出现大段文本的:任务描述、故事情节介绍,在实际游戏操作中所占游戏时间基本可以忽略掉(不考虑文本游戏)???据此,**处理游戏文字,要以优化’同屏显示多个零散字符串‘为主,以优化显示大段文字内容为次。
字母类语言的好处是,很少数量的字母就能满足全部文字显示需要,比如英语,但是对汉字而言,常用字就几千个,如何高效的在游戏中绘制文字,根据一些人的文章整理如下:
1. 按需、适时加载文字到纹理:游戏中用到的文字基本呈零散的方式出现,根据这个特点,用到具体文字时才适时加载到纹理,是最合理的使用存储空间(针对文字比较多的情况)??