- Home /
Stumped on object not set to an instance of an object, even though it is!?
Thanks for checking out my question. Basically I have a ship shop in which the player can pick different ships to play as. When they select a ship, it saves that ship using ints through playerprefs. But when I play the game after switching ships, it shoots out errors saying that the player script I want to activate is not set to an instance of an object. My code will be below, but what I did was set three ships to the gametag Player, and the others to Player2, because they have different player scripts. When ship 1 through 3 are selected, it says it cannot find playerController2, and vice versa for ships 4 through 6.
public void Play () {
spawner.SetActive (true);
GameObject.Find ("Points").GetComponent<scoreManager> ().enabled = true;
GameObject.Find ("Points").GetComponent<scorePoint> ().enabled = true;
GameObject.Find ("TapToPlay").SetActive (false);
GameObject.Find ("shipShop").SetActive (false);
if (shipShop.shipSelected == 1 || shipShop.shipSelected == 2 || shipShop.shipSelected == 3) {
GameObject.FindGameObjectWithTag ("Player").GetComponent<playerController> ().enabled = true;
} else {
return;
}
if (shipShop.shipSelected == 4 || shipShop.shipSelected == 5 || shipShop.shipSelected == 6) {
GameObject.FindGameObjectWithTag ("Player2").GetComponent<playerController2> ().enabled = true;
} else {
return;
}
Answer by tanoshimi · Nov 05, 2016 at 11:23 PM
Your logic is flawed. The entire second test ( if (shipShop.shipSelected == 4 || shipShop.shipSelected == 5 || shipShop.shipSelected == 6)) will never run. Because on line 11, the return
statement exits the function if the shipSelected is anything other than 1,2, or 3.
Get rid of the two else { return; }
blocks.
Even with the else return, it still gives me the same error.