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

【Unity基礎知識】Cocos2d-x的文本渲染系統和菜單

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

一.簡(jiǎn)介

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

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

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

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

二.TTF類(lèi)型標簽LabelTTF

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

LabelTTF的繼承關(guān)系

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

LabelTTF類(lèi)標簽對象的特點(diǎn)如下:

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

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

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

LabelTTF標簽類(lèi)為開(kāi)發(fā)者提供了一個(gè)create函數專(zhuān)門(mén)用于創(chuàng )建一個(gè)LabelTTF對象,具體聲明如下:

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

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

三.測試LabelTTF類(lèi)

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

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

Bool HelloWorld::init()

{

//調用父類(lèi)init函數

If(!Layer::init())

{

Return false;

}

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

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

//創(chuàng )建TTF標簽對象,參數為顯示文字內容、字體名稱(chēng)、字體大小

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

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

this->addChild(label1);

//創(chuàng )建TTF標簽對象,參數為顯示文字內容、字體名稱(chēng)、字體大小、標簽大小、文字水平對齊方式

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

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函數創(chuàng )建TTF標簽對象。運行項目,顯示如下:

LabelTTF的字體渲染效果

四.總結

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

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

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

文章“【Unity基礎知識】Cocos2d-x的文本渲染系統和菜單”已幫助

更多內容

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

THE END  

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

1 您的年齡

2 您的學(xué)歷

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

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

快速通道fast track

近期開(kāi)班時(shí)間TIME