Setting a game object from a list to be the active character that gets instantiated

I’m trying to make a character selection screen where clicking (or tapping) on the characters make that the active character so when the game is started that character prefab is instantiated.

What i have tried to do is make a list of the prefabs, the have an “activeCharacter” variable. Then by clicking or tapping on a character, the activeCharacter should then be set to one of the objects in the list. Its the last par that is the problem i cannot see how to set one of the prefabs in the list to be the active character.

I’m not sure if its a logic problem or just that i cannot find the correct way to code it.

Here is the method that will be on a button in the character selection screen:

public void SelectGreenCharacter()
    {
        spawner = GameObject.Find("Spawner").GetComponent<Spawner>();
        spawner.activeCharacter = spawner.characters;  //this is where i get stuck
    }

And here is the bit where i create a list of character prefabs on a “spawner” script:

[System.Serializable]
    public class Characters
    {
        public GameObject prefab;
    }

public List characters;

Just to clarify the character selection screen is in the main menu so you pick a character before you hit play, not sure if that matters.
Hopefully i have explained well enough but i can answer questions if needed.

Good day.

You only need to make a script that will not be destroyed whens cene changes, that stores the variable of the selecter character in some way, a integrer or a string, or even a class.

To learn hot to transfer data between scenes, please watch Unity official tutorial. You need to learn how to use the DontdetroyOnLoad function.

https://unity3d.com/learn/tutorials/topics/scripting/persistence-saving-and-loading-data

Good luck!