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# 型別作為參數。
什麼時候應該忽略警告
請勿忽略此規則的警告。參數型別無法被正確傳遞的訊號委派,在觸發訊號或呼叫回呼時會導致執行階段錯誤。