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.
Checking the stable version of the documentation...
GD0202:訊號委派簽章的參數型別不受支援
規則 ID |
GD0202 |
分類 |
用法 |
修正是否會破壞相容性 |
破壞性變更 - 若修改參數型別 非破壞性變更 - 若移除 |
預設啟用 |
是 |
原因
使用 [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# 型別作為參數。
什麼時候應該忽略警告
請勿忽略此規則的警告。參數型別無法被正確傳遞的訊號委派,在觸發訊號或呼叫回呼時會導致執行階段錯誤。