我的一些代码有一个奇怪的问题,我真的需要一些帮助。
我有一个附加到特定场景的游戏对象的脚本,因此Start()中的任何内容都将仅在该场景加载时运行。在这个脚本中,我访问的是Camera.main,因为我使用了附加到相机游戏对象的设置(这听起来可能效率不高,但对于我们正在创建的游戏风格来说,这是必要的)。无论如何,如果我在Unity中直接从那个场景开始,它工作得很好,但是如果我从我的介绍场景开始,然后加载到前面提到的场景中,我会得到这个错误:
MissingReferenceException: The object of type 'Camera' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
奇怪的是,我可以Debug.Log(Camera.main),它会告诉我相机的名字。因此,Camera.main不是null,并且不会像错误消息中所说的那样被销毁。下面是我的完整脚本:
private void Start()
{
Debug.LogError(Camera.main);
gameManager = FindObjectOfType<GameManagerScript>();
if (Camera.main == null)
{
Debug.LogError("Camera.main is null");
}
else
{
gameManager.LoadMusic(Camera.main);
gameManager.LoadAmbient(Camera.main);
gameManager.FadeStereoPan(Camera.main.gameObject.GetComponent<SwipeActivator>().stereoPanInNode);
}
}
上面的三个函数是我编写的自定义函数,但我不知道它们为什么会导致这个问题,因为如果我直接启动场景,它们就会起作用。
我已经有几个月没有遇到这个问题了,然后突然,我收到了这个错误,尽管我没有更改任何代码。任何帮助都将不胜感激。
发布于 2019-05-24 02:20:42
我相信你的MainCamera在两场戏之间被毁了。将其设置为"DontDestroyOnLoad()“
请看这个统一问题:https://answers.unity.com/questions/430141/need-the-same-main-camera-for-multiple-scenes.html
发布于 2019-05-24 02:54:03
啊,我修好了。我一头扎进我的自定义函数,发现我正在访问一个在游戏开始时设置的相机变量,然后在每个相机转换时,但它失败了,因为我正在加载一个场景,并且该场景还没有完成任何转换。我只是在上面的脚本中重新分配了这个变量,这样它就不会指向上一个场景中被销毁的对象。谢谢你,JiveTurkey,为我指明了正确的方向!
https://stackoverflow.com/questions/56280618
复制相似问题