【Unity基础知识】Cocos2d-x的文本渲染系统和菜单

发布 : Unity培训      来源:Unity干货资料

2022-07-05 14:30:15

一.简介

在游戏中,经常需要添加文字标签。游戏的介绍、游戏中的提示和对话等都需要用到文字。在游戏中,除了系统字体,还有很多地方需要使用由美术人员制作的纹理图片表现的文字。从代码的角度来看,它们与一般的纹理图片没有区别,就是一张包含文字信息的图片,此类文字经常被用来当作游戏的标题或者商标。Cocos2d-x为开发者提供了专门用于绘制文字的类。

Cocos2d-x提供了强大的文本渲染功能,既可以直接使用系统字体,也可以自己渲染字体,文本渲染类的继承关系如下图所示:

文本渲染类的继承关系图

上图显示了用于处理文字的4个类:Label、LabelAtlas、LabelBMFont和LabelTTF。这4个类都是通过不同的方式来显示文字的。它们都继承自LabelProtocol类。它们的类名中都有一个单词Label,在Cocos2d-x中,Label代表文字标签的意思,也就是说这些类是专门用于显示文字的对象。另外,因为它们都有一个共同的父类Node,所以文字标签与之前学习的图层或者精灵等都属于显示游戏内容的对象。在实际游戏开发中,读者可以按照需要选择一种或多种方式显示文字。

二.TTF类型标签LabelTTF

LabelTTF类是通过TTF字体来实现的字体标签。TTF(True Type Fonts)格式是一种在计算机领域通用的字体格式,可以说是使用最为广泛的文字显示格式,比如在Windows操作系统中,就是通过TTF格式字体显示文字的。这种类型字体文件的扩展名是.ttf。它的继承关系如下图所示:

LabelTTF的继承关系

从上图可以看出,LabelTTF的另一个父类就是Node。这说明开发者完全可以将LabelTTF的对象当作节点对象来使用,可以执行各种动作以及实现各种变化效果。

LabelTTF类标签对象的特点如下:

l 任何一种TTF字体都包含了某种语言当中的所有字母以及符号,开发者可以随机调整字体的大小、颜色以及样式。

l 因为TTF标准如今已经得到了普及,所以在很多操作系统中已经提供了多种字体,开发者可以直接使用。

l 渲染速度相对较慢,所以通常用于显示一些静态的标签和纯文本。

LabelTTF标签类为开发者提供了一个create函数专门用于创建一个LabelTTF对象,具体声明如下:

//创建LabelTTF标签对象,参数为显示文字内容、字体名称、字体大小、标签尺寸大小、文字水平对齐方式、文字竖直对齐方式

static LabelTTF* create(const std::string& string, const std::string& fontName, float fontSize, const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::CENTER, TextVAlignment vAlignment = TextVAlignment::TOP)

其中第一个参数是将要显示的文字内容。第二个参数是所用字体的名称。第三个参数是字体的大小。第四个参数是字体显示标签的尺寸大小,过大会浪费内存空间,过小则不能显示完整的内容。最后两个参数是文字绘制时的对齐方式,不同的对齐方式将会导致绘制的文字内容产生位置的变化。水平对齐方式分为左对齐、居中对齐和右对齐。竖直对齐方式分为顶部对齐、中间对齐和底部对齐。接下来通过一个案例来理解LabelTTF类在游戏开发中的具体使用方法。

三.测试LabelTTF类

新建一个项目名为LabelTTFTest,并修改HelloWorldScene.cpp文件中的init函数,具体代码如下:

//场景初始化方法

Bool HelloWorld::init()

{

//调用父类init函数

If(!Layer::init())

{

Return false;

}

Size visibleSize = Director::getInstance()->getVisibleSize();

Vec2 origin = Director::getInstance()->getVisibleOrigin();

//创建TTF标签对象,参数为显示文字内容、字体名称、字体大小

auto label1 = LabelTTF::create(“top”, “Font/cour.ttf”, 64);

label1->setPosition(visibleSize.width/2, visibleSize.height/2+200);

this->addChild(label1);

//创建TTF标签对象,参数为显示文字内容、字体名称、字体大小、标签大小、文字水平对齐方式

auto label2 = LabelTTF::create(“center”, “Font/msyh.ttf”, 64, Size(visibleSize.width/3, 200), TextHAlignment::LEFT);

label2->setPosition(visibleSize.width/2, visibleSize.height/2);

this->addChild(label2);

//创建TTF标签对象,参数为显示文字内容、字体名称、字体大小、标签大小、文字水平对齐方式、文字竖直对齐方式

auto label3 = LabelTTF::create(“bottom”, “Font/consola.ttf”, 64, Size(visibleSize.width/3, 200), TextHAlignment::RIGHT, TextHAlignment::CENTER);

label3->setPosition(visibleSize.width/2, visibleSize.height/2-200);

this->addChild(label3);

}

init函数分别演示了使用三种create函数创建TTF标签对象。运行项目,显示如下:

LabelTTF的字体渲染效果

四.总结

本节课介绍了Cocos2d-x中最常用的字体绘制方法-LabelTTF类。

LabelTTF类专门用于绘制TTF(True Type Fonts)字体,这种类型的字体现在非常普及,游戏中绝大多数的文字都是使用LabelTTF绘制的。但是由于其渲染速度相对较慢,所以通常用于显示游戏中的一些静态的标签和纯文本。

LabelTTF的几种不同构造函数可以允许开发者在创建TTF字体时指定字体文件路径、文字大小、对齐方式等参数,同时也可以使用setPosition函数来设置该文字在屏幕坐标系下的显示位置。

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部