public virtual void Destroy() { if (_destroyed) { return; } _destroyed = true; foreach (var disposable in _Subscriptions) { disposable.Dispose(); } _Subscriptions.Clear(); AgentBase?.Destroy(); OnDestroyed?.Invoke(this); UnityEngine.Object.Destroy(GameObject); }