SetActive(false) on Start() only working on Unity editor, but not on build target

Definitely get away from all that FindTag silliness. There is absolutely NO reason you need that.

Put the Tutorial script on its own object, drag all the items into an array, just like you do for any other Unity dragged-in reference, then make an API on the tutorial that lets you show only one of them.

If you have an array:

[Header( "Drag each tutorial part in here in order.")]
public GameObject[] AllTutorialPartsInOrder;

then a function to switch them on one at a time is:

public void SelectTutorialByNumber( int number)
{
  for (int i = 0; i < AllTutorialPartsInOrder.Length; i++)
  {
    GameObject toot = AllTutorialPartsInOrder[i];

    // this check lets you have blanks in the list
    if (toot)
    {
       toot.SetActive( number == i);
    }
  }
}

If you want none of them, pass in -1 to the above.

void Start()
{
   // switch ALL of them off to start
   SelectTutorialByNumber(-1);
}
1 Like