鋼鐵雄心4 GUI教程 P6滑輪

簡(jiǎn)單的gui制作一般不需要特別使用滑輪,但是當(dāng)我們想讓一個(gè)界面有更多豐富的內(nèi)容,就必須要使用滑輪了,這一p會(huì)專門詳細(xì)介紹如何在ui中添加滑輪

首先在介紹滑輪之前,我們需要對(duì)containerWindowType(窗口)有一個(gè)進(jìn)一步的理解,
先讓我們創(chuàng)建一個(gè)只有背景的窗口,并且在其中插入一張圖片

與先前不同,這一次我們不直接加入icontype,而是把它加入在新建窗口的子窗口中
注意看,這里子窗口使用了一種不同的size寫法

后端編寫直接略過,我們只需要讓它可見即可


可以看見,我們?cè)噲D加入的圖片將整個(gè)子窗口占滿了,換句話說,子窗口的大小變更為其中元件寬度和長(zhǎng)度的最大值(100%),但由于主窗口沒有填寫clipping = no,默認(rèn)會(huì)將超過主窗口大小的部分裁切掉
讓我們換一種方式,將這個(gè)icon直接添加在主窗口下(不使用子窗口承接),然后將主窗口長(zhǎng)寬改為100%

哦天哪,CleverCrafty大佬占據(jù)了整個(gè)屏幕!

由此我們看出:
主窗口的size如果以百分?jǐn)?shù)表示,將會(huì)變?yōu)檎紦?jù)屏幕比例大小,(長(zhǎng)寬100%即為整個(gè)屏幕)
子窗口下,size以百分?jǐn)?shù)表示則為所有下屬元件的長(zhǎng)寬總和

了解這些之后,我們?cè)囍鲆恍└?/p>
首先將主窗口調(diào)整到一個(gè)合適的大?。ú荒苷紦?jù)過多的屏幕空間),將子窗口寬度和長(zhǎng)度改為100%(以使得圖像完整顯示)
留意clipping,盡管默認(rèn)為yes但是這里專門寫出來強(qiáng)調(diào)一下,我們不希望子窗口中的圖片超過子窗口,因此必須裁掉多余部分

另外有關(guān)margin(窗口邊界)的一些解釋:
窗口大小類似于畫布大小,圖層大小即為實(shí)際元件的大小

當(dāng)我們?cè)O(shè)置margin后,類似于人為地,將畫布多擴(kuò)大一部分距離,使得內(nèi)部的元件,即使?
x =0/y = 0,也會(huì)距離窗口邊界有一段距離,當(dāng)我們?cè)O(shè)置size值為100%后,窗口大小會(huì)變化為:在內(nèi)部元件最大長(zhǎng)寬的基礎(chǔ)上,加上四邊的margin值
類似這樣:

進(jìn)入游戲,可以看見這次CleverCrafty大佬的畫像可以正常顯示了


進(jìn)入正題:CleverCrafty大佬的畫像由于過大,窗口進(jìn)行了裁剪,但是這不符合我們需要,我們想讓她顯示完全,就必須使用滑輪

我們注意到,盡管使用了clipping = yes,但是實(shí)際上,圖片的大小依舊是原來的大小
即,clipping?= yes是對(duì)窗口的裁切,超出規(guī)定窗口大小的部分隱藏顯示,內(nèi)部的元件依然是它們?cè)瓉淼拇笮。喸砭褪?strong>令內(nèi)部元件移動(dòng),使得它們超出窗口的部分進(jìn)入顯示范圍
那么我們可以在這個(gè)被裁切的窗口下,添加兩個(gè)滑輪:

進(jìn)入游戲,可以看見滑輪添加成功了

文本框添加滑輪
改為直接在instantTextBoxType下添加
特別注意如果給文本框添加滑輪,請(qǐng)勿使用orientation/origo,會(huì)令滑輪添加失??!



最后,意識(shí)形態(tài)滑輪為例,作為這次的結(jié)尾吧
不同于直接引用原版滑輪,使用extendedScrollbarType可以完成個(gè)性化的滑輪注冊(cè)
(一般除非特殊情況其實(shí)用不到,你完全可以直接用P社賜你的,但是TNO用了所以我覺得我最好還是講一下)
素材準(zhǔn)備
既然是講解TNO那肯定就用它的素材就好啦

前端設(shè)計(jì)
首先找到原版意識(shí)形態(tài)所屬的界面,countrypoliticsview.gui,把它復(fù)制到你的mod目錄下
注意,有別于先前的“元件”,extendedScrollbarType直接寫在guiTypes下(與
containerWindowType同一級(jí))且應(yīng)該寫在文件開頭位置(以防在你引用自定義滑輪時(shí)還沒有建立成功)


由此可以看見P社滑輪的原理,通過點(diǎn)擊按鈕或者滾輪上下滾動(dòng),令滑輪增加或者減少,當(dāng)值為最小值(默認(rèn)為0)時(shí)在一端,為最大值(默認(rèn)100)時(shí)在另一端

然后我們需要在gui文件中,找到排列意識(shí)形態(tài)的窗口,在這個(gè)窗口下添加滑輪
可能會(huì)有小伙伴問,咦我搜索“ideology”找到的是另一個(gè)啊
這里由于還沒有講解gridbox,粗略理解:帶“ideology”的窗口是被列舉項(xiàng),而真正承接這個(gè)列舉內(nèi)容的窗口是gridbox所屬的窗口

還記得上文講解的嗎?clipping = yes令該窗口有裁剪圖像/元件,background使得滑輪能正常生成,而黃框則用的是我們自定義的TNO風(fēng)味滑輪(你可以換成原版“right_vertical_slider”,沒有什么實(shí)際區(qū)別)
最后進(jìn)入游戲調(diào)整坐標(biāo)讓它擺放得“好看”一點(diǎn)
此圖為調(diào)整過坐標(biāo)的版本
后端編寫
什么,之前不是說原版ui無法觸及后端嗎?
是這樣的,但是因?yàn)橹患恿嘶唴s沒有加意識(shí)形態(tài),需要copy一份KR的意識(shí)形態(tài)添加到原版
然后進(jìn)入游戲測(cè)試

關(guān)于P社滑輪補(bǔ)充說明:
它其實(shí)是半智能滑輪,智能在于出現(xiàn)被窗口裁剪的圖像/元件時(shí),滑輪會(huì)自動(dòng)生成(只要你在gui里寫了);但是如果沒有(即所有元件都能在規(guī)定大小的窗口中正常顯示時(shí)),它就不會(huì)生成了

總算結(jié)束又一個(gè)坑了,下一篇應(yīng)該就是gridbox的詳細(xì)介紹了,盡請(qǐng)期待