400-650-7353
您所在的位置:首页 > IT干货资料 > unity > 【Unity基础知识】Cocos2d-x的文本渲染系统和菜单

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

  • 来源: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函数来设置该文字在屏幕坐标系下的显示位置。

文章“【Unity基础知识】Cocos2d-x的文本渲染系统和菜单”已帮助

更多内容

>>本文地址:

THE END  

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

领取零基础自学IT资源

(内含学习路线+视频教程+项目源码)

涉及Java、Web前端、UI设计、软件测试、Python等多个IT热门方向

打开微信扫一扫即可领取哦~

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME