本次教學筆記所使用的Godot版本為v4.2.1,程式語言為GDScript
============================================
【代碼編寫-按鈕訊號】
- 最左側的場景視窗,選擇要連結訊號的按鈕節點
- 最右側的節點面板,選擇要連接上的訊號(ex. pressed())
- 連結訊號至方法:指定要連到哪一個腳本?可在該腳本執行按鈕點擊的後續操作
比如這裡選擇了上一頁的按鈕,連接pressed()訊號後,
在ui_dictionary(圖鑑主代碼)會自動跳出一個已連接好的方法_on_ui_button_previous_pressed()
之後根據當前場景的名稱,設定要轉換至哪一個場景。
【代碼編寫-用程式連接訊號】
前一個方法需要在場景中已經存在該節點時才能連接,若是使用Instintiate()產生的節點,就需要用程式來連接。如下圖,我希望在點選到番茄蝙蝠時,就能切換到該生物的介紹頁面,因此需要知道是哪一個按鈕被點選了?並且能夠傳遞該參數給介紹頁面去顯示對應的內容。
在創建好按鈕後,將他自己的編號id封裝在msg字典裡
用connect()連接訊號pressed,self.表示指定連結的方法存在於目前編寫的腳本內
連結_on_ui_dictionary_buttonPic_pressed,再透過bind()方法將參數傳遞出去
若是要根據不同情況連接不同訊號,記得把用不到的訊號用disconnect()斷開連結!
生物、食物、成就頁面都有使用到這些實例化的按鈕,根據當前場景切換至不同頁面並傳遞參數
以小生物為例,將接收到的參數儲存在nowId
依此從creatureData("Total")中找到對應的資料,並將讀取到的數據(ex. A001)顯示在Label上
【輸入映射】
除了用滑鼠點擊對應的按鈕,有時也會希望透過滾輪、鍵盤、搖桿等其他輸入裝置來操控頁面切換。Godot提供了輸入映射的方式來整合同類型操作所對應到的指令。在專案 > 專案設定 > 輸入映射,可替操作指令命名及分組。比方說:按鍵W、按鍵↑、滑鼠滾輪像上都可以代表move_up的動作
【代碼編寫-偵測輸入訊號】
透過Input.is_action_just_released()找到剛點擊完畢的switch_target(按下鍵盤Tab)
若是目前在Creature頁面,就切換到Food頁面
若在CreatureDetail頁面,則將顯示的小生物圖片在快樂和生氣之間切換
【成果展示】
用本文的三種方法就能將整個圖鑑需要的互動性串接好了。
-------參考資料-------
繫結訊號 --- Godot Engine
How to connect signals to an instantiated node --- hbru1234 (2024/1/14)
godot4 通過connect連接信號,并傳遞參數 --- 有個夢想的小白 (2023/11/24)
============================================
順利是件好事,但製作切換功能時幾乎沒碰到啥大問題很令人意外。這一個月燃燒了大量的耐心和腦細胞,但能實際看到頁面換來換去時還是很令人開心。下次的主題還沒決定好,看企劃書的編寫進度囉QQ