圖元腳本

本文介紹圖元腳本的編輯方法。

介面說明

image-20240719154714450

  1. 畫布,主要編輯區域
  2. 目前正在編輯的文件
  3. 圖元分類、點選任意圖元會展開圖元選擇介面
  4. 屬性面板

圖元分類說明

3.區域對應的圖元分類分別是:

  1. 搜尋:輸入關鍵字搜尋出的圖元。
  2. 常用:設為常用圖元的圖元會在此。
  3. 事件:滿足條件即會觸發,是邏輯的開始。
  4. 條件:用於腳本的流程控制。
  5. 行為:對實體\資料的實際操作。
  6. 模組:一些模組專有的行為。
  7. 數據:對數據的處理。
  8. 變數:使用已有的變數或新增變數。
  9. 函數:使用或新建自訂函數。
  10. 外部呼叫:呼叫其他腳本的自訂函數。

圖元的使用

圖元說明

圖元下方的凸起代表著該圖元後可以連結其他圖元。

image-20240719162414368

圖元上方的凹陷代表著該圖元前方可連結其他圖元,且必須前置圖元運作後才會運作。

image-20240719162458868

若上方沒有凹陷但下方有凸起,代表著該圖元為一段邏輯的起點,一般為事件圖元。

image-20240719162532230

如果上下方都沒有凸起或凹陷,代表該圖元為一段數據,可以應用在其他圖元上。

image-20240719162637872

圖元中會帶有輸入和輸出參數:

輸入參數

輸入參數預設為空白,其內部標註的類型即為所需參數的型別。

image-20240719163219101

此圖元中腳本名稱也是所需參數,但是使用的是資源選擇器,可以直接選擇專案內的對應資源,無需考慮類型匹配。

輸出參數

輸出參數預設為彩色方塊,可以拖曳該方塊填入所需的輸入參數框內:

image-20240719163455421

圖元使用

在分類處選擇自己想使用的圖元後,點選或拖曳到畫布即使用了對應的圖元。

image-20240719161426471

image-20240719161444643

使用上方有凹槽的圖元,即可將兩個圖元拼接在一起:

image-20240719161910607

image-20240719161930593

一組圖元的邏輯總是從上到下的:

image-20241105153444063

image-20241105153522814

對於串聯起來的一組圖元,必要的入參需要填入適當的資料才能確保腳本正常運作。不合適的變數會報錯,滑鼠點擊報錯可以看到報錯訊息:

image-20240719163823327

image-20240719163854644

拖曳圖元時,會將下方圖元一併拖曳:

image-20240906110832061

image-20240906110844840

按住Ctrl鍵拖曳,可以只拖曳目前圖元,下方圖元會自動連接到上方:

image-20240906110855565

圖元屬性面板

點選圖元,該圖元會處於選取狀態

image-20241122190755370

在右側Inspector面板,您可以查看選取圖元的詳細信息,包括了它的名稱、描述、參數名稱、參數類型、返回值類型、返回值描述等。

image-20241122190944942

流程控制

圖元腳本預設的執行順序是從上到下的,您也許時常需要程式碼的流程控制來實現複雜邏輯。

請參考下面連結中圖元腳本-流程控制查看詳細說明:

腳本附加說明

變數

變數處可以定義或修改三種變數:

  1. 全域實體屬性:全域元件的屬性,支援自訂。可以在任何腳本取到或修改自訂的全域實體屬性。
  2. 腳本變數:僅用於目前腳本的變量,其他腳本可以透過外部取得並修改。
  3. 局部變數:僅用於目前程式碼區塊的變量,程式碼區塊外無效。

全域實體屬性

透過組件設定中的實體組件屬性,可以新增全域實體屬性。

image-20240719170731723

image-20240719170751222

image-20240719170812335

建立好全域實體屬性後,就可以使用取得全域圖元來取得該屬性:

image-20240719170915428

使用設定全域圖元設定該屬性:

image-20240719170953632

腳本變數

在變數分類中,存在一個創建變數按鈕:

image-20240719171622005

image-20240719171647910

透過該方式建立的變數為腳本變量,用於目前腳本資料處理。

在其他腳本中可以透過外部引用的方式取得並設定該變數:

image-20240719171819031

在其他腳本外部引用時需要注意:取得和設定時需要指定引用腳本掛載的對應實體。

局部變數

透過局部變數圖元可以建立僅當前程式碼區塊可用的變數:

image-20240719171508081

可以透過雙擊變數名的方式重新命名該變數:

image-20240719171540482

程式碼區塊是指一段連續的圖元,值得特別注意的是,條件分類中的」如果-否則「圖元預設是兩個程式碼區塊。每段如果、否則、否則如果都是一塊獨立的程式碼區塊。

image-20240722192115698

image-20240722192055277

自訂函數

在圖元腳本中支援有返回值函數和無返回值函數。

有返回值函數在呼叫時不可連結其他圖元,呼叫圖元即為返回值。

image-20240719180031043

image-20240719180117743

無返回值函數在呼叫時可以連結其他圖元。

image-20240719180039563

image-20240719180134147

等待:此圖元為非同步函數時阻斷,等待非同步函數執行完再執行下面的圖元。

執行:此圖元為非同步函數時不阻斷,繼續執行下面的圖元。

非同步函數是函數實作內使用了會進行非同步處理的圖元,例如「等待」。

image-20240722105341566

注意:不支援在具有返回值的函數中使用非同步圖元。

image-20240806115625031

如果需要非同步函數傳回值,請使用無返回值函數,並使用輸出變數。

image-20240806115658582

無論是否有傳回值,自訂函數都可以在呼叫圖元的下方使用函數的輸出變數來取得輸出。

image-20240806113746376

image-20240806121329099

自訂事件

除了官方提供的各種事件之外,您還可以透過自訂事件來觸發邏輯。

image-20250630114130051

點選按鈕,進行自訂事件管理:

<img src=“https://dl.dir.freefiremobile.com/common/OB46/CSH/OfficialWeb/04-Scripts/image-20250630114142109.png” alt=“image-20250630114142109.png” alt=“image-20250630114142109%”

在自訂事件清單中右鍵以管理自訂事件:

image-20250630114340277

點選+按鈕,新建自訂事件:

image-20250630114208389

在這裡您需要設定自定事件的名稱、自訂事件訊號發送的物件類型以及參數。只有指定的物件類型才能接收到觸發該事件的訊號。

image-20250121181204861

在回合開始時向所有玩家發送自訂事件

image-20250121181429023

玩家接受到自訂事件訊號後觸發邏輯

圖元的搜尋與常用

輸入關鍵字可以搜尋對應的圖元

image-20240719181845696

在圖元選擇介面右鍵圖元可以將圖元設為常用圖元,在常用圖元分類可以快速使用圖元。

image-20240719182033312

image-20240719182130450

範例

利用一個簡單範例對腳本使用進行示範:

設計如下:

  1. 每位玩家加入比賽時,為其發放一把M4A1。
  2. 玩家開火時,每次開火扣除自身1點生命值。

建立腳本

1.的需求是全域的,2.是針對每個玩家的。所以需要在全域和玩家上各掛載一個腳本。發放道具與扣除生命均需要伺服器知曉,所以皆建立為伺服器腳本。

image-20240719183317332

image-20240719183333435

編輯腳本:

對1來說,需要每位玩家加入比賽中執行一次發放道具:

image-20240719183627320

對於新增道具圖元,需要增加道具的目標、新增的道具、增加道具的數量三個參數。

增加道具的目標就是觸發了當玩家加入比賽事件的玩家,道具透過資源管理器選擇M4A1,數量為1。

image-20240719183756275

對2來說,每次開火時需要執行一次扣除生命值:

我們發現實際上沒有扣除生命值的圖元:

image-20240719183925677

恢復生命值圖元的參數填入負數不會扣除生命值

不過生命值作為玩家的屬性,可以透過設定屬性來調整:

image-20240719184034769

設定屬性圖元需要被設定屬性的實體、被設定的屬性和數值、運算幾個參數。

其中被設定屬性的實體就是目前玩家,所以可以使用此實體,雙擊該參數位置即可快速填入此實體。

image-20240719184236329

需要變更的屬性值是目前生命值,選擇目前生命值。

而設定的值是當前生命值減去1,所以需要取得當前生命。

image-20240719184443713

使用資料分類中的減法對其減一,添入參數:

image-20240719184604249

image-20240719184622223

也可以直接使用設定屬性圖元的運算來實現該邏輯:

image-20240719184700828

運行調試查看結果:

image-20240719184826220

每個人都發放了一把M4A1。

image-20240719184935284

開火8次掉了8點生命值。

當開火時觸發是每次執行開火指令時觸發,連發武器在武器放下前進行的射擊都視為一次開火,只能觸發一次該事件。