1. 程式人生 > >Godot Engine 學習筆記 指令碼-建立

Godot Engine 學習筆記 指令碼-建立

指令碼-建立

指令碼

  • 在Godot3.0之前,編寫遊戲指令碼的唯一選擇是使用 GDScript。而現在,Godot官方支援四種語言,並且能夠動態新增額外的語言!
  • GDScript
    • 簡單,優雅,設計上為Lua、Python、Squirrel等語言使用者所熟悉。
    • 載入和編譯速度飛快(blazingly fast)。
    • 編輯器整合非常令人愉快,有節點、訊號、其它場景相關專案的程式碼完成。
    • 有內建向量型別(比如Vector、Transform等),大量使用線性代數時非常有效。
    • 支援多執行緒,像靜態型別語言一樣有效 - 這是我們避免使用諸如Lua、Squirrel等虛擬機器的原因之一。
    • 不使用垃圾回收器,所以它確定性地自動處理之這部分(大多數物件都是引用計數)。
    • 它的動態特性使其需要提高效能時,可以很容易地優化C++程式碼段(通過GDNative),而這些不需要重新編譯引擎。
  • 以上完完全全出自官方文件。
  • 關於其他的語言,看官方文件吧。
  • 官方文件
  • 以下從官方文件照著學的。

建立場景

  • 新增一個Panel作為根節點,然後為Panel新增一個Label節點和一個Button節點
  • 節點樹如下:
    • Panel
      • Label
      • Button

在這裡插入圖片描述

  • 選中控制元件,然後從右下方的屬性面板欄中的Rect下的size設定控制元件大小

在這裡插入圖片描述

  • 在屬性面板中的Text屬性設定文字

在這裡插入圖片描述

  • 在屬性面板中的Rect下的Position中設定控制元件位置

在這裡插入圖片描述

  • Label的屬性面板中有Align和Valign可分別設定其中文字的水平佈局和垂直佈局,Button只有Align只能設定水平佈局。

在這裡插入圖片描述

  • 最後還要記得儲存場景。

新增指令碼

  • 右擊需要新增指令碼的節點或選中節點然後點選場景樹編輯器右上方的帶一個小加號的按鈕
  • 現在為Panel新增一個指令碼

在這裡插入圖片描述

  • 點選後腳本建立對話方塊會彈出。這個對話方塊允許你設定指令碼語言、類名和其它相關選項。
  • 在GDScript裡,檔案本身代表了類,所以類名一欄無法編輯。
  • 因為新增指令碼的節點是Panel,繼承自欄會自動選為Panel
  • 最後輸入指令碼的路徑名並新建

在這裡插入圖片描述

  • 新建後可通過節點右側的"開啟指令碼"圖示或屬性面板的Script屬性來檢視指令碼

在這裡插入圖片描述

  • 點選後會進入指令碼編輯器

在這裡插入圖片描述

  • _ready() 函式在節點及其所有子節點進入活動場景時呼叫。 注意: _ready()並不是構造器;構造器是 _init()

處理訊號

  • 當某種特定行為發生時,訊號會被“觸發”,並且它們可以連線到任意指令碼例項的任意函式。訊號主要用於GUI節點,不過其他節點也有訊號,你甚至可以在自己的腳本里定義自定義訊號。
  • 現在連線Button按下的訊號,選中Button節點,然後選擇屬性面板右邊的"節點"選項卡,接著選擇"訊號"。

在這裡插入圖片描述

  • 選中pressed()然後點選"連線訊號…"。

在這裡插入圖片描述

  • 點選"連線訊號…"後彈出連線訊號對話方塊。

在這裡插入圖片描述

  • 在對話方塊的節點樹中觸發節點為紅色顯示名稱,然後選中想要觸發方法的節點,節點路徑會根據選中的節點自動更改,Method In Node 為節點指令碼中觸發方法的名稱。然後點選連線,如果右側的建立方法為ON則會在建立連線前建立好方法。
  • 然後即可在指令碼中的_on_Button_pressed()自定義觸發方法的內容。

在這裡插入圖片描述

  • 這裡觸發的程式碼為將Label的文字變為"Hello"
  • 然後執行場景看看效果:

在這裡插入圖片描述

  • 點選"button":

在這裡插入圖片描述

  • Label的文字從"Label"變為"Hello"
  • 注意:get_node(path)方法的引數不是類名而是節點名,如果Button是Label的子節點,則需要寫成get_node("Label/Button")
  • Godot除了可以用如上編輯器的視覺化介面創捷連線,還可以使用程式碼建立,具體見官方文件