400-650-7353
您所在的位置:首頁 > IT干貨資料 > unity > 【Unity基礎(chǔ)知識(shí)】Cocos2d-x的文本渲染系統(tǒng)和菜單

【Unity基礎(chǔ)知識(shí)】Cocos2d-x的文本渲染系統(tǒng)和菜單

  • 來源:Unity干貨資料
  • 2022-07-05 14:30:15
  • 閱讀()
  • 分享
  • 手機(jī)端入口

一.簡(jiǎn)介

在游戲中,經(jīng)常需要添加文字標(biāo)簽。游戲的介紹、游戲中的提示和對(duì)話等都需要用到文字。在游戲中,除了系統(tǒng)字體,還有很多地方需要使用由美術(shù)人員制作的紋理圖片表現(xiàn)的文字。從代碼的角度來看,它們與一般的紋理圖片沒有區(qū)別,就是一張包含文字信息的圖片,此類文字經(jīng)常被用來當(dāng)作游戲的標(biāo)題或者商標(biāo)。Cocos2d-x為開發(fā)者提供了專門用于繪制文字的類。

Cocos2d-x提供了強(qiáng)大的文本渲染功能,既可以直接使用系統(tǒng)字體,也可以自己渲染字體,文本渲染類的繼承關(guān)系如下圖所示:

文本渲染類的繼承關(guān)系圖

上圖顯示了用于處理文字的4個(gè)類:Label、LabelAtlas、LabelBMFont和LabelTTF。這4個(gè)類都是通過不同的方式來顯示文字的。它們都繼承自LabelProtocol類。它們的類名中都有一個(gè)單詞Label,在Cocos2d-x中,Label代表文字標(biāo)簽的意思,也就是說這些類是專門用于顯示文字的對(duì)象。另外,因?yàn)樗鼈兌加幸粋(gè)共同的父類Node,所以文字標(biāo)簽與之前學(xué)習(xí)的圖層或者精靈等都屬于顯示游戲內(nèi)容的對(duì)象。在實(shí)際游戲開發(fā)中,讀者可以按照需要選擇一種或多種方式顯示文字。

二.TTF類型標(biāo)簽LabelTTF

LabelTTF類是通過TTF字體來實(shí)現(xiàn)的字體標(biāo)簽。TTF(True Type Fonts)格式是一種在計(jì)算機(jī)領(lǐng)域通用的字體格式,可以說是使用最為廣泛的文字顯示格式,比如在Windows操作系統(tǒng)中,就是通過TTF格式字體顯示文字的。這種類型字體文件的擴(kuò)展名是.ttf。它的繼承關(guān)系如下圖所示:

LabelTTF的繼承關(guān)系

從上圖可以看出,LabelTTF的另一個(gè)父類就是Node。這說明開發(fā)者完全可以將LabelTTF的對(duì)象當(dāng)作節(jié)點(diǎn)對(duì)象來使用,可以執(zhí)行各種動(dòng)作以及實(shí)現(xiàn)各種變化效果。

LabelTTF類標(biāo)簽對(duì)象的特點(diǎn)如下:

l 任何一種TTF字體都包含了某種語言當(dāng)中的所有字母以及符號(hào),開發(fā)者可以隨機(jī)調(diào)整字體的大小、顏色以及樣式。

l 因?yàn)門TF標(biāo)準(zhǔn)如今已經(jīng)得到了普及,所以在很多操作系統(tǒng)中已經(jīng)提供了多種字體,開發(fā)者可以直接使用。

l 渲染速度相對(duì)較慢,所以通常用于顯示一些靜態(tài)的標(biāo)簽和純文本。

LabelTTF標(biāo)簽類為開發(fā)者提供了一個(gè)create函數(shù)專門用于創(chuàng)建一個(gè)LabelTTF對(duì)象,具體聲明如下:

//創(chuàng)建LabelTTF標(biāo)簽對(duì)象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標(biāo)簽尺寸大小、文字水平對(duì)齊方式、文字豎直對(duì)齊方式

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)

其中第一個(gè)參數(shù)是將要顯示的文字內(nèi)容。第二個(gè)參數(shù)是所用字體的名稱。第三個(gè)參數(shù)是字體的大小。第四個(gè)參數(shù)是字體顯示標(biāo)簽的尺寸大小,過大會(huì)浪費(fèi)內(nèi)存空間,過小則不能顯示完整的內(nèi)容。最后兩個(gè)參數(shù)是文字繪制時(shí)的對(duì)齊方式,不同的對(duì)齊方式將會(huì)導(dǎo)致繪制的文字內(nèi)容產(chǎn)生位置的變化。水平對(duì)齊方式分為左對(duì)齊、居中對(duì)齊和右對(duì)齊。豎直對(duì)齊方式分為頂部對(duì)齊、中間對(duì)齊和底部對(duì)齊。接下來通過一個(gè)案例來理解LabelTTF類在游戲開發(fā)中的具體使用方法。

三.測(cè)試LabelTTF類

新建一個(gè)項(xiàng)目名為L(zhǎng)abelTTFTest,并修改HelloWorldScene.cpp文件中的init函數(shù),具體代碼如下:

//場(chǎng)景初始化方法

Bool HelloWorld::init()

{

//調(diào)用父類init函數(shù)

If(!Layer::init())

{

Return false;

}

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

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

//創(chuàng)建TTF標(biāo)簽對(duì)象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小

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

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

this->addChild(label1);

//創(chuàng)建TTF標(biāo)簽對(duì)象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標(biāo)簽大小、文字水平對(duì)齊方式

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);

//創(chuàng)建TTF標(biāo)簽對(duì)象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標(biāo)簽大小、文字水平對(duì)齊方式、文字豎直對(duì)齊方式

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函數(shù)分別演示了使用三種create函數(shù)創(chuàng)建TTF標(biāo)簽對(duì)象。運(yùn)行項(xiàng)目,顯示如下:

LabelTTF的字體渲染效果

四.總結(jié)

本節(jié)課介紹了Cocos2d-x中最常用的字體繪制方法-LabelTTF類。

LabelTTF類專門用于繪制TTF(True Type Fonts)字體,這種類型的字體現(xiàn)在非常普及,游戲中絕大多數(shù)的文字都是使用LabelTTF繪制的。但是由于其渲染速度相對(duì)較慢,所以通常用于顯示游戲中的一些靜態(tài)的標(biāo)簽和純文本。

LabelTTF的幾種不同構(gòu)造函數(shù)可以允許開發(fā)者在創(chuàng)建TTF字體時(shí)指定字體文件路徑、文字大小、對(duì)齊方式等參數(shù),同時(shí)也可以使用setPosition函數(shù)來設(shè)置該文字在屏幕坐標(biāo)系下的顯示位置。

文章“【Unity基礎(chǔ)知識(shí)】Cocos2d-x的文本渲染系統(tǒng)和菜單”已幫助

更多內(nèi)容

>>本文地址:http://nfbqydst.cn/zhuanye/2022/72179.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營銷互聯(lián)網(wǎng)營銷
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營全域電商運(yùn)營
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁設(shè)計(jì)網(wǎng)頁設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開發(fā)智能機(jī)器人
 

快速通道fast track

近期開班時(shí)間TIME