public void ChangeState <STATE_TYPE>() where STATE_TYPE : UnitState, new() { if (unitState != null) { unitState.End(this); } unitState = new STATE_TYPE(); unitState.Start(this); }