最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

用LuaSTG制作自己的單關(guān)1:制作簡(jiǎn)單的UI

2021-01-31 11:08 作者:SSWTLZZ  | 我要投稿

各位,好久不見(
有沒有想我呢(湊不要臉)
昨天也說(shuō)了,要做教程,那么廢話不多說(shuō),直接開始吧

注意:我這里lsTG用的是ex+ 0.82b版本,你可能會(huì)看見一些不認(rèn)識(shí)的節(jié)點(diǎn),出現(xiàn)的時(shí)候我會(huì)解釋一下

接下來(lái)的內(nèi)容可能需要一點(diǎn)lua基礎(chǔ),如果不會(huì)的話...還不滾去學(xué)(?)?

這是原有的UI,然后呢,我們可以給他加上一些東西.

定義一個(gè)obj,組改為GROUP_GHOST,layer改成LAYER_TOP

create?task?to?self是這個(gè)0.82版本加入的,可以無(wú)視

然后再把這個(gè)obj的render的回調(diào)函數(shù)的default?action給刪掉

再然后就可以開始我們的制作了.


現(xiàn)在,假如我想要顯示殘機(jī)數(shù)量,那我該怎么做呢?
介紹一個(gè)變量叫l(wèi)sTG.var.lifeleft
這個(gè)變量代表著殘機(jī)的數(shù)量(可以試試手動(dòng)修改他)
類似的,還有(以下省略lsTG.var)
chip(殘機(jī)碎片)
bomb(雷)
bombchip(雷碎片)
pointrate(最大得點(diǎn))
power(靈力)
graze(擦彈)
Score(得分)
hiScore(最高分)



這些變量都是數(shù)值,用普通的image來(lái)表示是無(wú)法想象的,那么有什么好方法嗎?
這里又要介紹幾個(gè)函數(shù):

LoadFont(fontname,filename)

從資源文件中加載位圖字體。filename為fnt格式,可由工具Font Editor生成,生成的fnt文件和png文件要在同一目錄下。


LoadTTF(ttfname,filename,facename,size,weight,...)
從資源文件中加載字體,支持fon/fnt/ttf/ttc/fot/otf/mmm/pfb/pfm格式。facename是字體的名稱;size為字體的高度,單位是像素;weight是字體的粗細(xì),400為普通粗細(xì),700為粗體;可選參數(shù)是字體的變形,可以取以下一個(gè)或多個(gè)字符串:

RenderText(fontname,text,x,y,size,...)
繪制文字。可選參數(shù)表示文字排列和對(duì)齊的模式,可以取以下一個(gè)或多個(gè)字符串(每行限1個(gè)):
'left' 'center' 'right'
'top' 'vcenter' 'bottom'
或者:
'centerpoint' 等效于同時(shí)取'center'和'vcenter'

RenderTTF(ttfname,text,left,right,bottom,top,color,...)
在一個(gè)矩形區(qū)域中繪制文字??蛇x參數(shù)表示文字排列和對(duì)齊的模式,可以取以下一個(gè)或多個(gè)字符串(每行限1個(gè)):
'left' 'center' 'right'
'top' 'vcenter' 'bottom'
'wordbreak' 'singleline' 'expantextabs 'noclip' 'calcrect' 'rtlreading'
或者:
'paragraph'等效于同時(shí)取'left'、'top'和'wordbreak'
'centerpoint' 等效于同時(shí)取'center'、'vcenter'和'noclip'


那個(gè)這個(gè)Font和TTF有什么區(qū)別呢?
簡(jiǎn)單的說(shuō),一般Font只能用ASCII碼的字符,而TTF可以用更多的字符
但是Font字符的自由度(?)更高

Font字體

LuaSTG自帶了幾個(gè)字體(在Library\font里),也已經(jīng)幫我們加載好了,我們可以直接使用
可以替換這里面的字體,不過(guò)名字要和原來(lái)的一模一樣



奇怪的效果(
#textlist代表textlist這個(gè)表的元素個(gè)數(shù),text變量這里是環(huán)問題,不懂的可以去百度一下(

這里用的是Font

RenderText(fontname,text,x,y,size,...)

最上面的是加載原有的字體
然后現(xiàn)在給它起名了叫'my_Score'(fontname)
text是文字的內(nèi)容
x,y是文字的坐標(biāo)(具體位置因后面的附加參數(shù)而異)
size是字體大小

textlist里的就是所謂附加參數(shù),效果如上面gif圖(
那個(gè)LeaF葉子是RenderText下面一行的Render實(shí)現(xiàn)的,用來(lái)標(biāo)記坐標(biāo)(self.x,self.y)

知道了RenderText的用法之后,就可以上手了(?)


這樣就簡(jiǎn)單的做出了一個(gè)小UI了
這時(shí)你可能會(huì)有疑問

那么有沒有什么辦法解決這個(gè)問題呢?

這里呢,再再介紹幾個(gè)函數(shù):

SetFontState(fontname,blendmode)

SetFontState(fontname,blendmode,color)

設(shè)置字體的混合模式和顏色。若省略color,則維持原顏色。

?

SetFontState2(proportion,rotation,spacing,tracking)

設(shè)置字體的幾何參數(shù)。每個(gè)參數(shù)均可以為nil,這樣將被視為默認(rèn)值。

SetFontState和SetImageState是很相似的,可以類比一下.

效果
代碼

上面這一坨是為了簡(jiǎn)單易懂點(diǎn),其實(shí)可以壓縮成這個(gè)樣子:

看不看得懂就不是我的問題了(劃掉)

效果是一樣的

然后呢,如果是想要渲染那種條狀的,該怎么做呢?

不包括前面的葉子和'power:'? 用到了RenderRect

用到了RenderTexture


希望能看懂(
'white'是一個(gè)全白的image

power增加的效果

然后是,下面的是可以做的比較好看的條的做法(?)

用到了RenderTexture
下面那個(gè)條的圖片


RenderTexture和RenderRect具體的用法可以看看我之前寫的那篇教程:

好了,卜想寫了(
最后祝你,提前? ? 再見

oh對(duì)了,你可以在code里加個(gè)這個(gè),這樣原有的UI就會(huì)消失(也許僅限ex+版本以上)

function lsTG.lsTG_ui:drawScore()

? ? self:ScoreUpdate()

end

用LuaSTG制作自己的單關(guān)1:制作簡(jiǎn)單的UI的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
福泉市| 安达市| 突泉县| 乌拉特前旗| 岢岚县| 玛纳斯县| 定日县| 廉江市| 潮州市| 盘山县| 日喀则市| 綦江县| 靖宇县| 万盛区| 怀仁县| 新丰县| 平度市| 平安县| 土默特右旗| 锦州市| 海原县| 酒泉市| 新竹县| 阳泉市| 徐水县| 清流县| 泸水县| 改则县| 丰宁| 元阳县| 青州市| 洞口县| 商河县| 松阳县| 东乡族自治县| 阜平县| 旬邑县| 武陟县| 聂拉木县| 武夷山市| 永年县|