RPG instatiating the player

I am doing an RPG game and I already did the menu of the character class selection.
Here’s the script:
( I wrote it in english/italy)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class UI_Creazione_P : MonoBehaviour {

    private BasePlayer newPlayer;
    public bool isWarriorClass;
    public bool isMageClass;
    public bool isArcherClass;
    public Image Guerriero;
    public Image Mago;
    public Image Assassino;
    public Text Nome_Classe;
    public Text Descrizione_Classe;
    public Text Forza;
    public Text Intelligenza;
    public Text Destrezza;
    public Button Create;
    public GameObject warriorCharacter;
    public GameObject archerCharacter;

    void Start()
    {
        // Modello guerriero
        warriorCharacter = GameObject.FindGameObjectWithTag("Warrior_Character");
        // Modello arciere
        archerCharacter = GameObject.FindGameObjectWithTag("Archer_Character");

        // Rendiamo i modelli invisibili all'inizio
        warriorCharacter.SetActive(false);
        archerCharacter.SetActive(false);

        // "Creiamo il giocatore"
        newPlayer = new BasePlayer();

        // Settiamo le calssi all'inizio della creazione tutte false
        isWarriorClass = false;
        isMageClass = false;
        isArcherClass = false;

    }

    void Update()
    {
        // Chiamiamo le funzioni della visione delle stats
        RendiVisibileStats();
    }

    // Funzione che rende la classe guerriera quella attuale
    public void SetWarriorClassTrue()
    {
        isWarriorClass = true;
        isMageClass = false;
        isArcherClass = false;

        // La classe del giocatore sarà quella guerriera
        newPlayer.ClasseGiocatore = new WarriorClass();

        // Rende visibile il modello del guerriero
        warriorCharacter.SetActive(true);
        archerCharacter.SetActive(false);
    }

    // Funzione che rende la classe maga quella attuale
    public void SetMageClassTrue()
    {
        isMageClass = true;
        isWarriorClass = false;
        isArcherClass = false;

        // La classe del giocatore sarà quella maga
        newPlayer.ClasseGiocatore = new MageClass();

        // Rende visibile il modello del mag
        archerCharacter.SetActive(false);
        warriorCharacter.SetActive(false);

    }

    // Funzione che rende la classe assassina quella attuale
    public void SeArcherClassTrue()
    {
        isArcherClass = true;
        isMageClass = false;
        isWarriorClass = false;

        // La classe del giocatore sarà quella assassina
        newPlayer.ClasseGiocatore = new ArcherClass();

        // Rende visibile l'assassino
        archerCharacter.SetActive(true);
        warriorCharacter.SetActive(false);
    }
    void PlayerStats()
    {
        newPlayer.VitaAttuale = newPlayer.ClasseGiocatore.VitaAttuale;
        newPlayer.VitaMassima = newPlayer.ClasseGiocatore.VitaMassima;
        newPlayer.VitaMinima = newPlayer.ClasseGiocatore.VitaMinima;
        newPlayer.EnergiaAttuale = newPlayer.ClasseGiocatore.EnergiaAttuale;
        newPlayer.EnergiaMassima = newPlayer.ClasseGiocatore.EnergiaMassima;
        newPlayer.EnergiaMinima = newPlayer.ClasseGiocatore.EnergiaMinima;
        newPlayer.Forza = newPlayer.ClasseGiocatore.Forza;
        newPlayer.Intelligenza = newPlayer.ClasseGiocatore.Intelligenza;
        newPlayer.Destrezza = newPlayer.ClasseGiocatore.Destrezza;
    }
    void RendiVisibileStats()
    {
        PlayerStats();
        Nome_Classe.text = "Nome classe: " + newPlayer.ClasseGiocatore.Nome;
        Descrizione_Classe.text = "Descrizione classe: " + newPlayer.ClasseGiocatore.Descrizione;
        Forza.text = "Forza: " + newPlayer.Forza.ToString();
        Intelligenza.text = "Intelligenza: " + newPlayer.Intelligenza.ToString();
        Destrezza.text = "Destrezza: " + newPlayer.Destrezza.ToString();
    }
    public void CreateCharacter()
    {}

The player structure and the classes are set like HardlyBrief Programming did but this is made by my self.

But now how can I instantiate the character model in a new scene giving him the stats of the class selected before?
I was thinking about doing something like this in the CreateCharacter():

if(isWarriorClass == true)
{
     SceneManager.LoadScene("main_scene");
     Instantiate(warriorCharacter);
}

But I dont know how to give the player’s stats to this gameobject.
I need a reference to them too so I can use them in other scripts.
And I don’t know why, but in the scene loaded the character isn’t instantiated.

1 Like