【发布时间】:2017-12-20 16:28:28
【问题描述】:
我在将两个游戏对象实例化到一个场景中时遇到了问题,该场景存储在前一个场景的两个变量中。我正在调试以确保变量确实填充了必要的游戏对象,它们确实如此。但是当我尝试将这些 Gameobject 实例化到新场景中时,我得到了错误:
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)
我通过在调用 StoreAnimalAvatar 的第一个场景中单击按钮,将游戏对象分配给一个对象中的变量,该对象在场景之间持续存在(不要破坏),然后当我切换到下一个场景时,我有一个脚本( AvatarFinalPreview.cs) 在其 Start 函数中调用 LoadAnimalAvatar。我不确定为什么在我的调试日志中显示对象存在时它说对象为空。我做错了什么?
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);
}
【问题讨论】:
-
这个问题已经被问过很多次了。
DontDestroyOnLoad(yourObject)... -
我有一个不在根目录中的游戏对象。当我尝试使用 DontDestryOnLoad 时,我收到错误
DontDestroyOnLoad only work for root GameObjects or components on root GameObjects.是否有其他方法可以使用您的建议? -
尝试使用预制件。
-
@Draco18s 我存储的游戏对象具有在运行时应用的自定义纹理。
-
哦,在那种情况下。停止使用场景。
标签: c# unity3d instantiation