GameObject.FindGameObjectsWithTag() does not find game objects that are deactivated. You have a couple of choices. If the list of ‘City’ objects is fixed at start, don’t deactivate them in Awake. Instead, get the list, and then deactivate them after getting the list.
spawnPoints = GameObject.FindGameObjectsWithTag("City");
foreach (GameObject go in spawnPoints) {
go.SetActive(false);
}
A second solution would be to not deactivate them at all. Simply turn off specific scripts as necessary to make them appear deactivated:
To ‘reactive’ the object, just enable the components.
An inefficient choice would be to get a list of game objects including disabled objects, and cycle through the list…or a list of objects with a specific script.