protected virtual void OnDestroy() { if (GetGameObject() != null) { input.OnColorSwitch -= BroadcastColorSwitch; gm.WorldColorChange -= OnWorldColorChange; movement.Terminate(); combat.Terminate(); } }