本次教學(xué)筆記所使用的Godot版本為v4.2.1,程式語言為GDScript
============================================
【自訂樣式】StyleBox
一開始新增VScrollBar子節(jié)點(diǎn),簡單縮放後只能得到左2那個(gè)細(xì)長又黑黑的卷軸。不介意的話可以直接使用,但若想使用自己準(zhǔn)備的素材,就需要在Theme Overrides > Styles指定覆蓋新的StyleBoxTexture。
因?yàn)镚rabber(可抓取的那個(gè)軸)的寬度無法超過Scroll本身的寬度,所以反過來將Scroll變寬並套用只有中心有顏色、其餘部分為透明的texture,就可以做出頭大但身體纖細(xì)的卷軸樣式。而Grabber本身的樣式僅套用texture時(shí)會(huì)看不見,需要在Texture Margins指定想要的長度。
【代碼編寫 - 捲動(dòng)畫面】
set_step():卷軸每次捲動(dòng)的單位是1
scrollMax:頁面能捲動(dòng)的最大值。以食物為例,目前有12種食物。而畫面顯示每行2個(gè),單次顯示4行,所以可知捲動(dòng)的最大值為12 * 0.5 - 4 = 2
set_max():指定卷軸的最大值
set_value():初始值為0時(shí),卷軸會(huì)在最上面(起點(diǎn))
當(dāng)卷軸捲動(dòng)時(shí),value軸值的數(shù)據(jù)會(huì)改變,因此使用"value_changed"信號(hào)去連接我希望他執(zhí)行的捲動(dòng)程式
執(zhí)行的內(nèi)容也很簡單,就是將目前的軸值*2(因?yàn)槊啃酗@示2個(gè))保存為startNum,再呼叫畫面更新
pagePicArr.size():8個(gè)圖片欄位,有先在其他地方將節(jié)點(diǎn)路徑保存下來了
picPath:圖片路徑,其中[startNum + num]代表以startNum為起點(diǎn),依序抓取8個(gè)資料
set_texture():將texture指定給目標(biāo)圖片
【成果展示】
-------參考資料-------
Godot 3.x Tutorial: ScrollContainers --- AlexHoratio (2022/09/03)
Range --- Godot Engine
============================================
還蠻早就知道有VScrollBar這個(gè)節(jié)點(diǎn)的,只是當(dāng)初完全搞不懂該怎麼用?也覺得反正能自己寫程式硬幹出同樣的效果就算了www。只是後來美術(shù)大大給的頁面設(shè)計(jì)並不存在上下鍵頭,邊煩惱邊看了一堆Drag & Drop教學(xué)後,總覺得用Area2D去寫滑鼠偵測感覺像是繞了一個(gè)微妙的大圈......?最後老老實(shí)實(shí)地回去摸索節(jié)點(diǎn)功能了(資料找超久,但實(shí)作簡單到讓人懷疑當(dāng)初為啥會(huì)選擇逃避 )