Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

鍵盤/控制器導覽和焦點

對於使用者介面來說,支援全鍵盤和控制器進行導覽和互動是常見的。這有利於改善專案可存取性,不是每個人都能使用滑鼠或觸摸控制進行互動,或是讓你的專案準備在:ref:`遊戲主機 <doc_consoles>`上運作,或者只是為了那些喜歡在PC上用控制器玩遊戲的人。

使用鍵盤或控制器在 UI 元素之間導覽是通過更改主動選擇的節點來完成的。這也稱為更改 UI 焦點。 Godot 中的每個 Control 節點都能夠獲得焦點。預設情況下,一些控制項節點有能力自動拾取焦點內建的 UI 動作,並做出反應,例如 ui_up, ui_down, ui_focus_next 等。這些動作可以在專案的輸入對應中的設定和修改。

警告

因為這些動作用於焦點,它們不應該被用於遊戲程式碼。

測試

除了內建的邏輯之外,你還可以為每個單獨的控制項節點定義所謂的鄰焦點。這允許在你專案的使用者介面上的路徑微調UI焦點。單個節點的設定可以在屬性面板欄的 "Control" 部分的 "Focus " 類別下找到。

../../_images/focus_settings.png

鄰近選項用於定義四向導覽的節點,例如使用方向鍵或控制器上的方向鍵。如,當使用向下箭頭向下導覽或按下方向鍵時,將使用底部鄰近。 “下一個”和“上一個”選項與焦點轉移按鈕一起使用,例如桌面作業系統上的 Tab

備註

如果節點被隱藏,它就會失去焦點。

模式設定定義了節點如何被聚焦。**All**意味著節點可以通過用滑鼠點擊,或用鍵盤或控制器選擇而被關注。**Click**意味著只能通過點擊來關注。最後,**None**意味著它根本不能被關注。不同的控制項節點根據它們的典型使用方式有不同的預設設定,如,Label 節點預設設定為“None”,而:ref:`按鈕 <class_Button>`則為“All”。

確保為焦點和導覽正確配置場景。如果節點沒有配置鄰焦點,引擎將嘗試自動猜測下一個控制項。這可能會導致意外行為,尤其是在沒有明確定義垂直或水平導覽操作的複雜使用者介面中。

必要的程式碼

為了使鍵盤和控制器導覽正常工作,在場景開始時,所有節點都需要使用程式碼進行焦點控制。如果不這樣做,按下按鈕或按鍵時,就不會有任何作用。下面是一個用程式碼設定初始焦點的基本例子:

func _ready():
    $StartButton.grab_focus()

現在,當場景啟動,"Start Button" 節點被聚焦,鍵盤或控制器可以用來在它和其他UI元素之間進行導覽。