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

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

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

一.簡介

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

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

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

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

二.TTF類型標簽LabelTTF

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

LabelTTF的繼承關(guān)系

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

LabelTTF類標簽對象的特點如下:

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

l 因為TTF標準如今已經(jīng)得到了普及,所以在很多操作系統(tǒng)中已經(jīng)提供了多種字體,開發(fā)者可以直接使用。

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

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

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

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)

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

三.測試LabelTTF類

新建一個項目名為LabelTTFTest,并修改HelloWorldScene.cpp文件中的init函數(shù),具體代碼如下:

//場景初始化方法

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標簽對象,參數(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標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標簽大小、文字水平對齊方式

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標簽對象,參數(shù)為顯示文字內(nèi)容、字體名稱、字體大小、標簽大小、文字水平對齊方式、文字豎直對齊方式

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標簽對象。運行項目,顯示如下:

LabelTTF的字體渲染效果

四.總結(jié)

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

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

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

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

更多內(nèi)容

>>本文地址:http://hqfphsz.com/zhuanye/2022/72179.html

THE END  

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

1 您的年齡

2 您的學(xué)歷

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

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

快速通道fast track

近期開班時間TIME