我知道我們應該避免腳本相互依賴。這就是為什么我想知道是否將腳本放入 Inspector 中的 UnityEvent 會使擁有此 UnityEvent 的腳本依賴于被呼叫的腳本。
例如,我有一個ScriptWithEvent.cs包含 UnityEvent 的腳本。在檢查器中,我向此 UnityEvent 添加了一個事件,該事件呼叫Open()另一個腳本中的方法OtherScript.cs。在這個腳本中,我有另一種方法可以更改鏈接到包含 GameObjectScriptWithEvent.cs或內部公共變數的組件活動狀態ScriptWithEvent.cs。
這是否ScriptWithEvent.cs相互依賴OtherScript.cs?UnityEvent 是否會創建對我們呼叫的腳本的依賴?
uj5u.com熱心網友回復:
不,它沒有,UnityEvent 需要一個 UnityAction,它是一個指向方法的指標。持有 UnityEvent 的腳本不知道方法持有者的型別,也不知道方法的內容。同樣,C# 事件不知道注冊的方法,只知道它們需要匹配委托簽名。
您的 UnityEvent 是一個地址串列,可以在其中找到呼叫呼叫時要運行的方法。但它完全不知道它存盤在什么型別中。UnityEvent 的唯一依賴是該方法必須存盤在 MonoBehaviour 中,并且方法簽名有一些限制。
UnityEvent 與普通 C# 事件相比具有此優勢,在后者中,訂閱者需要了解如何通過檢查器注冊型別或介面 UnityEvent 洗掉該依賴項,因為您可以拖動任何內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/448782.html
上一篇:下面函式的空間復雜度
