Load character from character selector to the game scene

Hi everyone!

I’m developing a mobile game: It’s a game where you have a cannon on wheels and you have to shoot the boxes to get points.

Here there is a menu to choose his cannon. When you press GO !, the chosen cannon should appear on the gamescene (the cannons are already on the gamescene but are disabled).
But unfortunately it does not work.

Here are the scripts I did for the guns to load :

using System.Collections;
using UnityEngine;

public class DataHandler : MonoBehaviour
{
    // Start is called before the first frame update

    public int cartSel;

    void Awake()
    {
        GameObject.DontDestroyOnLoad(this.gameObject);
    }

    void Start()
    {
        cartSel = 1;
    }

    public void selectCart(int a)
    {
        cartSel = a;
    }
}

and this one

using UnityEngine;
using System.Collections;

public class DataImplementer : MonoBehaviour {


    int cartSelected;

    GameObject Default;
    GameObject Gunner;
    GameObject Titan;
    GameObject Berserk;
    GameObject Schockwave;
    GameObject Undertaker;
    GameObject Sparky;

    void Start(){
        cartSelected = GameObject.Find("DataHandler").GetComponent<DataHandler>().cartSel;

        if (cartSelected == 1) {
            Default.SetActive(true);
            Gunner.SetActive(false);
            Titan.SetActive(false);
            Berserk.SetActive(false);
            Schockwave.SetActive(false);
            Undertaker.SetActive(false);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 2) {
            Default.SetActive(false);
            Gunner.SetActive(true);
            Titan.SetActive(false);
            Berserk.SetActive(false);
            Schockwave.SetActive(false);
            Undertaker.SetActive(false);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 3) {
            Default.SetActive(false);
            Gunner.SetActive(false);
            Titan.SetActive(true);
            Berserk.SetActive(false);
            Schockwave.SetActive(false);
            Undertaker.SetActive(false);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 4) {
            Default.SetActive(false);
            Gunner.SetActive(false);
            Titan.SetActive(false);
            Berserk.SetActive(true);
            Schockwave.SetActive(false);
            Undertaker.SetActive(false);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 5) {
            Default.SetActive(false);
            Gunner.SetActive(false);
            Titan.SetActive(false);
            Berserk.SetActive(false);
            Schockwave.SetActive(true);
            Undertaker.SetActive(false);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 6) {
            Default.SetActive(false);
            Gunner.SetActive(false);
            Titan.SetActive(false);
            Berserk.SetActive(false);
            Schockwave.SetActive(false);
            Undertaker.SetActive(true);
            Sparky.SetActive(false);
        }

        else if (cartSelected == 7) {
            Default.SetActive(false);
            Gunner.SetActive(false);
            Titan.SetActive(false);
            Berserk.SetActive(false);
            Schockwave.SetActive(false);
            Undertaker.SetActive(false);
            Sparky.SetActive(true);
        }







    }


}

I hope someone could fix my problem

Thanks :slight_smile: (sry for my bad english)

Could it be, that the Start Method got already called, so nothing is actually happening when you select a canon?
Add a method to the DataImplementer Script like showSelectedCanon(int sel) and put the body of the start method as body of this method.
Like that:

     void showSelectedCanon(int sel){
         cartSelected = sel;
 
         if (cartSelected == 1) {
             Default.SetActive(true);
             Gunner.SetActive(false);
             Titan.SetActive(false);
             Berserk.SetActive(false);
             Schockwave.SetActive(false);
             Undertaker.SetActive(false);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 2) {
             Default.SetActive(false);
             Gunner.SetActive(true);
             Titan.SetActive(false);
             Berserk.SetActive(false);
             Schockwave.SetActive(false);
             Undertaker.SetActive(false);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 3) {
             Default.SetActive(false);
             Gunner.SetActive(false);
             Titan.SetActive(true);
             Berserk.SetActive(false);
             Schockwave.SetActive(false);
             Undertaker.SetActive(false);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 4) {
             Default.SetActive(false);
             Gunner.SetActive(false);
             Titan.SetActive(false);
             Berserk.SetActive(true);
             Schockwave.SetActive(false);
             Undertaker.SetActive(false);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 5) {
             Default.SetActive(false);
             Gunner.SetActive(false);
             Titan.SetActive(false);
             Berserk.SetActive(false);
             Schockwave.SetActive(true);
             Undertaker.SetActive(false);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 6) {
             Default.SetActive(false);
             Gunner.SetActive(false);
             Titan.SetActive(false);
             Berserk.SetActive(false);
             Schockwave.SetActive(false);
             Undertaker.SetActive(true);
             Sparky.SetActive(false);
         }
 
         else if (cartSelected == 7) {
             Default.SetActive(false);
             Gunner.SetActive(false);
             Titan.SetActive(false);
             Berserk.SetActive(false);
             Schockwave.SetActive(false);
             Undertaker.SetActive(false);
             Sparky.SetActive(true);
         }

     }

Now if you call that method after selecting a canon, it should work. Like:

     public void selectCart(int a)
     {
         cartSel = a;
         // call showSelectedCanon here
     }