本文介紹圖元腳本的編輯方法。
介面說明
- 畫布,主要編輯區域
- 目前正在編輯的文件
- 圖元分類、點選任意圖元會展開圖元選擇介面
- 屬性面板
圖元分類說明
3.區域對應的圖元分類分別是:
- 搜尋:輸入關鍵字搜尋出的圖元。
- 常用:設為常用圖元的圖元會在此。
- 事件:滿足條件即會觸發,是邏輯的開始。
- 條件:用於腳本的流程控制。
- 行為:對實體\資料的實際操作。
- 模組:一些模組專有的行為。
- 數據:對數據的處理。
- 變數:使用已有的變數或新增變數。
- 函數:使用或新建自訂函數。
- 外部呼叫:呼叫其他腳本的自訂函數。
圖元的使用
圖元說明
圖元下方的凸起代表著該圖元後可以連結其他圖元。
圖元上方的凹陷代表著該圖元前方可連結其他圖元,且必須前置圖元運作後才會運作。
若上方沒有凹陷但下方有凸起,代表著該圖元為一段邏輯的起點,一般為事件圖元。
如果上下方都沒有凸起或凹陷,代表該圖元為一段數據,可以應用在其他圖元上。
圖元中會帶有輸入和輸出參數:
輸入參數:
輸入參數預設為空白,其內部標註的類型即為所需參數的型別。
此圖元中腳本名稱也是所需參數,但是使用的是資源選擇器,可以直接選擇專案內的對應資源,無需考慮類型匹配。
輸出參數:
輸出參數預設為彩色方塊,可以拖曳該方塊填入所需的輸入參數框內:
圖元使用
在分類處選擇自己想使用的圖元後,點選或拖曳到畫布即使用了對應的圖元。
使用上方有凹槽的圖元,即可將兩個圖元拼接在一起:
一組圖元的邏輯總是從上到下的:
對於串聯起來的一組圖元,必要的入參需要填入適當的資料才能確保腳本正常運作。不合適的變數會報錯,滑鼠點擊報錯可以看到報錯訊息:
拖曳圖元時,會將下方圖元一併拖曳:
按住Ctrl鍵拖曳,可以只拖曳目前圖元,下方圖元會自動連接到上方:
圖元屬性面板
點選圖元,該圖元會處於選取狀態
在右側Inspector面板,您可以查看選取圖元的詳細信息,包括了它的名稱、描述、參數名稱、參數類型、返回值類型、返回值描述等。
流程控制
圖元腳本預設的執行順序是從上到下的,您也許時常需要程式碼的流程控制來實現複雜邏輯。
請參考下面連結中圖元腳本-流程控制查看詳細說明:
變數
變數處可以定義或修改三種變數:
- 全域實體屬性:全域元件的屬性,支援自訂。可以在任何腳本取到或修改自訂的全域實體屬性。
- 腳本變數:僅用於目前腳本的變量,其他腳本可以透過外部取得並修改。
- 局部變數:僅用於目前程式碼區塊的變量,程式碼區塊外無效。
全域實體屬性
透過組件設定中的實體組件屬性,可以新增全域實體屬性。
建立好全域實體屬性後,就可以使用取得全域圖元來取得該屬性:
使用設定全域圖元設定該屬性:
腳本變數
在變數分類中,存在一個創建變數按鈕:
透過該方式建立的變數為腳本變量,用於目前腳本資料處理。
在其他腳本中可以透過外部引用的方式取得並設定該變數:
在其他腳本外部引用時需要注意:取得和設定時需要指定引用腳本掛載的對應實體。
局部變數
透過局部變數圖元可以建立僅當前程式碼區塊可用的變數:
可以透過雙擊變數名的方式重新命名該變數:
程式碼區塊是指一段連續的圖元,值得特別注意的是,條件分類中的」如果-否則「圖元預設是兩個程式碼區塊。每段如果、否則、否則如果都是一塊獨立的程式碼區塊。
自訂函數
在圖元腳本中支援有返回值函數和無返回值函數。
有返回值函數在呼叫時不可連結其他圖元,呼叫圖元即為返回值。
無返回值函數在呼叫時可以連結其他圖元。
等待:此圖元為非同步函數時阻斷,等待非同步函數執行完再執行下面的圖元。
執行:此圖元為非同步函數時不阻斷,繼續執行下面的圖元。
非同步函數是函數實作內使用了會進行非同步處理的圖元,例如「等待」。
注意:不支援在具有返回值的函數中使用非同步圖元。
如果需要非同步函數傳回值,請使用無返回值函數,並使用輸出變數。
無論是否有傳回值,自訂函數都可以在呼叫圖元的下方使用函數的輸出變數來取得輸出。
自訂事件
除了官方提供的各種事件之外,您還可以透過自訂事件來觸發邏輯。
點選按鈕,進行自訂事件管理:
<img src=“https://dl.dir.freefiremobile.com/common/OB46/CSH/OfficialWeb/04-Scripts/image-20250630114142109.png” alt=“image-20250630114142109.png” alt=“image-20250630114142109%”
在自訂事件清單中右鍵以管理自訂事件:
點選+按鈕,新建自訂事件:
在這裡您需要設定自定事件的名稱、自訂事件訊號發送的物件類型以及參數。只有指定的物件類型才能接收到觸發該事件的訊號。
在回合開始時向所有玩家發送自訂事件
玩家接受到自訂事件訊號後觸發邏輯
圖元的搜尋與常用
輸入關鍵字可以搜尋對應的圖元
在圖元選擇介面右鍵圖元可以將圖元設為常用圖元,在常用圖元分類可以快速使用圖元。
範例
利用一個簡單範例對腳本使用進行示範:
設計如下:
- 每位玩家加入比賽時,為其發放一把M4A1。
- 玩家開火時,每次開火扣除自身1點生命值。
建立腳本:
1.的需求是全域的,2.是針對每個玩家的。所以需要在全域和玩家上各掛載一個腳本。發放道具與扣除生命均需要伺服器知曉,所以皆建立為伺服器腳本。
編輯腳本:
對1來說,需要每位玩家加入比賽中執行一次發放道具:
對於新增道具圖元,需要增加道具的目標、新增的道具、增加道具的數量三個參數。
增加道具的目標就是觸發了當玩家加入比賽事件的玩家,道具透過資源管理器選擇M4A1,數量為1。
對2來說,每次開火時需要執行一次扣除生命值:
我們發現實際上沒有扣除生命值的圖元:
恢復生命值圖元的參數填入負數不會扣除生命值
不過生命值作為玩家的屬性,可以透過設定屬性來調整:
設定屬性圖元需要被設定屬性的實體、被設定的屬性和數值、運算幾個參數。
其中被設定屬性的實體就是目前玩家,所以可以使用此實體,雙擊該參數位置即可快速填入此實體。
需要變更的屬性值是目前生命值,選擇目前生命值。
而設定的值是當前生命值減去1,所以需要取得當前生命。
使用資料分類中的減法對其減一,添入參數:
也可以直接使用設定屬性圖元的運算來實現該邏輯:
運行調試查看結果:
每個人都發放了一把M4A1。
開火8次掉了8點生命值。
當開火時觸發是每次執行開火指令時觸發,連發武器在武器放下前進行的射擊都視為一次開火,只能觸發一次該事件。