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.