Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

GD0202:訊號委派簽章的參數型別不受支援

規則 ID

GD0202

分類

用法

修正是否會破壞相容性

破壞性變更 - 若修改參數型別

非破壞性變更 - 若移除 [Signal] 屬性

預設啟用

原因

使用 [Signal] 屬性標註的委派參數型別不是預期的 Variant 相容型別

規則說明

每個訊號參數都必須是 Variant 相容型別,才能在觸發訊號和呼叫回呼時被正確傳遞。

class SomeType { }

// SomeType is not a valid parameter type because it doesn't derive from GodotObject,
// so it's not compatible with Variant.
public void InvalidSignalEventHandler(SomeType someType);

// System.Int32 is a valid type because it's compatible with Variant.
public void ValidSignalEventHandler(int someInt);

請參閱 C# 訊號 文件,瞭解如何宣告與使用訊號。

修正方式

要修正此規則的違規情形,請將參數型別改為 Variant 相容型別,或從委派移除 [Signal] 屬性。(注意:移除屬性後該訊號將不會被註冊)。

小訣竅

若該訊號不需與 Godot 互動,建議直接使用 C# 事件。純 C# 事件允許你使用任何 C# 型別作為參數。

什麼時候應該忽略警告

請勿忽略此規則的警告。參數型別無法被正確傳遞的訊號委派,在觸發訊號或呼叫回呼時會導致執行階段錯誤。