Multiple Spawn Points

im creating a small First person game for dissertation research.

i have the character in the center of the scene that can only rotate and a cross hair.

basically i need to randomly spawn a target (which i have created) in one of 20-30 locations around the character. once the target has been shot/tagged it disappears recording the amound of time in s and ms it was alive. and another target is again randomly spawned at one of the locations.

I understand i need to create a bunch of spawnpoints. and use `Transform[] spawnpoints = GetComponentsInChildren(typeof(Transform)) as Transform[];` to get an array of those spawn points,

i am unsure of where the different scripts need to be assigned what scripts i need.

would it be best to have a boolean that is assigned globally to track if a target is present in the scene.

Well, if I would make a spawn manager, I'd do something like this:

public class Spawner : MonoBehaviour
{
    public GameObject monsterPrefab; // Set this in inspector to the monster prefab.

    GameObject monsterInstance;
    Transform[] spawnpoints;    
    IEnumerator Start()
    {
        spawnpoints = GetComponentsInChildren<Transform>();
        while (true)
        {
            Spawn();
            while (monsterInstance) // Wait for monster to die.
            {
                yield return null;
            }
            yield return new WaitForSeconds(3); // wait 3 seconds for next monster.
        }
    }

    void Spawn()
    {
         int index = Random.Range(0, spawnpoints.Length - 1);
         var spawnpoint = spawnpoints[index];
         monsterInstance = (GameObject)Instantiate(monsterPrefab, 
                                                   spawnpoint.position,
                                                   spawnpoint.rotation);
    }
}