鋼鐵雄心4 GUI教程 P6滑輪

簡單的gui製作一般不需要特別使用滑輪,但是當我們想讓一個界面有更多豐富的內容,就必須要使用滑輪了,這一p會專門詳細介紹如何在ui中添加滑輪

首先在介紹滑輪之前,我們需要對containerWindowType(窗口)有一個進一步的理解,

先讓我們創建一個只有背景的窗口,並且在其中插入一張圖片

與先前不同,這一次我們不直接加入icontype,而是把它加入在新建窗口的子窗口中

注意看,這裡子窗口使用了一種不同的size寫法

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

可以看見,我們試圖加入的圖片將整個子窗口占滿了,換句話說,子窗口的大小變更為其中元件寬度和長度的最大值(100%),但由於主窗口沒有填寫clipping = no,默認會將超過主窗口大小的部分裁切掉

讓我們換一種方式,將這個icon直接添加在主窗口下(不使用子窗口承接),然後將主窗口長寬改為100%

哦天哪,CleverCrafty大佬佔據了整個屏幕!

由此我們看出:

主窗口的size如果以百分數表示,將會變為佔據屏幕比例大小,(長寬100%即為整個屏幕)

子窗口下,size以百分數表示則為所有下屬元件的長寬總和

了解這些之後,我們試著做一些更改

首先將主窗口調整到一個合適的大小(不能佔據過多的屏幕空間),將子窗口寬度和長度改為100%(以使得圖像完整顯示)

留意clipping,盡管默認為yes但是這裡專門寫出來強調一下,我們不希望子窗口中的圖片超過子窗口,因此必須裁掉多餘部分

另外有關margin(窗口邊界)的一些解釋:

窗口大小類似於畫布大小,圖層大小即為實際元件的大小

當我們設置margin後,類似於人為地,將畫布多擴大一部分距離,使得內部的元件,即使 

x =0/y = 0,也會距離窗口邊界有一段距離,當我們設置size值為100%後,窗口大小會變化為:在內部元件最大長寬的基礎上,加上四邊的margin值

類似這樣:

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

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

我們注意到,盡管使用了clipping = yes,但是實際上,圖片的大小依舊是原來的大小

即,clipping = yes是對窗口的裁切,超出規定窗口大小的部分隱藏顯示,內部的元件依然是它們原來的大小,而滑輪原理就是令內部元件移動,使得它們超出窗口的部分進入顯示範圍

那麼我們可以在這個被裁切的窗口下,添加兩個滑輪:

進入游戲,可以看見滑輪添加成功了

GIF

文本框添加滑輪

改為直接在instantTextBoxType下添加

特別注意如果給文本框添加滑輪,請勿使用orientation/origo,會令滑輪添加失敗!

此處改過字體

最後,意識形態滑輪為例,作為這次的結尾吧

不同於直接引用原版滑輪,使用extendedScrollbarType可以完成個性化的滑輪注冊

(一般除非特殊情況其實用不到,你完全可以直接用P社賜你的,但是TNO用了所以我覺得我最好還是講一下)

素材准備

既然是講解TNO那肯定就用它的素材就好啦

前端設計

首先找到原版意識形態所屬的界面,countrypoliticsview.gui,把它複製到你的mod目錄下

注意,有別於先前的「元件」,extendedScrollbarType直接寫在guiTypes下(與

containerWindowType同一級)且應該寫在文件開頭位置(以防在你引用自定義滑輪時還沒有建立成功)

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

然後我們需要在gui文件中,找到排列意識形態的窗口,在這個窗口下添加滑輪

可能會有小夥伴問,咦我搜索「ideology」找到的是另一個啊

這裡由於還沒有講解gridbox,粗略理解:帶「ideology」的窗口是被列舉項,而真正承接這個列舉內容的窗口是gridbox所屬的窗口

還記得上文講解的嗎?clipping = yes令該窗口有裁剪圖像/元件,background使得滑輪能正常生成,而黃框則用的是我們自定義的TNO風味滑輪(你可以換成原版「right_vertical_slider」,沒有什麼實際區別)

最後進入游戲調整坐標讓它擺放得「好看」一點

此圖為調整過坐標的版本

後端編寫

什麼,之前不是說原版ui無法觸及後端嗎?

是這樣的,但是因為只加了滑輪卻沒有加意識形態,需要copy一份KR的意識形態添加到原版

然後進入游戲測試

GIF

關於P社滑輪補充說明:

它其實是半智能滑輪,智能在於出現被窗口裁剪的圖像/元件時,滑輪會自動生成(只要你在gui里寫了);但是如果沒有(即所有元件都能在規定大小的窗口中正常顯示時),它就不會生成了

總算結束又一個坑了,下一篇應該就是gridbox的詳細介紹了,盡請期待

隨便看看 更多