private void ClearSelectionArea() { unitSelectionArea.gameObject.SetActive(false); if (unitSelectionArea.sizeDelta.magnitude == 0) { Ray ray = mainCamera.ScreenPointToRay(Mouse.current.position.ReadValue()); if (!Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, layerMask)) { return; } if (!hit.collider.TryGetComponent <Unit>(out Unit unit)) { return; } if (!unit.hasAuthority) { return; } SelectedUnits.Add(unit); foreach (Unit selectedUnit in SelectedUnits) { selectedUnit.Select(); } return; } Vector2 min = unitSelectionArea.anchoredPosition - (unitSelectionArea.sizeDelta / 2); Vector2 max = unitSelectionArea.anchoredPosition + (unitSelectionArea.sizeDelta / 2); foreach (Unit unit in player.getMyUnits()) { if (SelectedUnits.Contains(unit)) { continue; } Vector3 screenPosition = mainCamera.WorldToScreenPoint(unit.transform.position); if (screenPosition.x > min.x && screenPosition.x < max.x && screenPosition.y > min.y && screenPosition.y < max.y) { SelectedUnits.Add(unit); unit.Select(); } } }