小ネタです。
[SerializeField] private Button button;
button.onClick.AddListener(callback);
Button
のonClick
にはスクリプトからコールバックを登録できます。
そして、
button.onClick.RemoveAllListeners();
スクリプトから、登録したコールバックを削除することもできます。
が、
インスペクタから登録したコールバックは削除されません。
理由は、UnityEvent
の基底クラス、UnityEventBase
の中身を見るとわかります。
private InvokableCallList m_Calls; [FormerlySerializedAs("m_PersistentListeners")] [SerializeField] private PersistentCallGroup m_PersistentCalls;
AddListener
とかでいじられているのは全部m_Call
。
m_PersistentCalls
は無傷で、これがインスペクタから登録するやつです。
persistentの名前の通り、簡単には削除できないようですね。(リフレクションでごり押したら知らんけど)