title: Move/Carry non root GameObject to another Scene
body: <p>I'm having trouble instantiating two game objects into a scene that I've stored in two variables from a previous scene. I'm debugging to make sure that the variables are indeed populated with the necessary Gameobject, and they are. But when I try to instantiate these Gameobject into the new scene I'm getting the error:</p>
  
  <pre><code>ArgumentException: The Object you want to instantiate is null.
  UnityEngine.Object.CheckNullArgument (System.Object arg, System.String message) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.cs:238)
  UnityEngine.Object.Instantiate (UnityEngine.Object original, Vector3 position, Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.cs:150)
  UnityEngine.Object.Instantiate[GameObject] (UnityEngine.GameObject original, Vector3 position, Quaternion rotation) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.cs:205)
  GameManager.LoadAnimalAvatar () (at Assets/_Coloring_Book/__Scripts/GameManager.cs:84)
  AvatarFinalPreview.Start () (at Assets/_Coloring_Book/__Scripts/ColoringBook/AvatarFinalPreview.cs:9)
  </code></pre>
  
  <p>I'm assigning the gameobjects to variables in an object that persists from scene to scene (do not destroy) through a button click in the first scene that calls StoreAnimalAvatar and then when I switch to the next scene I have a script (AvatarFinalPreview.cs) that calls LoadAnimalAvatar in its Start function. I'm unsure why it's saying the object is null when in my debug log it shows that they exist. What am I doing incorrectly?</p>
  
  <pre><code>public void StoreAnimalAvatar()
      {
          GameObject uiObject3D = GameObject.Find("UIObject3D");
          GameObject animalToStore = GameObject.FindGameObjectWithTag("Avatar Preview");
  
          AnimalUIObject3D = uiObject3D;
          AnimalAvatar = animalToStore;
  
          Debug.Log("Animal Stored");
          Debug.Log(AnimalUIObject3D.name);
          Debug.Log(AnimalAvatar.name);
      }
  
      public void LoadAnimalAvatar()
      {
          GameObject canvas = GameObject.FindGameObjectWithTag("Canvas");
  
          GameObject uiObject3D = Instantiate(AnimalUIObject3D, new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
          GameObject avatar = Instantiate(AnimalAvatar, new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
          avatar.transform.SetParent(canvas.transform);
      }
  </code></pre>