我正在尝试禁用“相机”组件以在我的相机之间进行切换。 但是,当我尝试获取GameObject的Camera组件时,它将返回null。
这是我的GameObject:
这是我的代码崩溃的地方:
void respawn(){
cameraDead.transform.position = new Vector3(player.transform.position.x, cameraDead.transform.position.y, player.transform.position.z);
cameraDead.GetComponent<Camera>().enabled = true;//It crashes right here
camera.GetComponent<Camera>().enabled = false;
player.transform.SetPositionAndRotation(new Vector3(-27f, 0f, -8.35f), Quaternion.Euler(new Vector3(0,90,0)));
isDead = true;
}
错误消息指出指针返回空值。因此找不到组件。 预先感谢。
答案 0 :(得分:0)
当禁用组件或游戏对象处于非活动状态时,您无法使用GetComponent来获取它。根据您的代码,似乎首先禁用了CameraDead的Camera组件,然后尝试在启用它时获取它。
您可以通过缓存组件轻松解决此问题。像这样:
首先在场景中同时启用两个相机组件。
public GameObject cameraDead;
public GameObject camera;
private Camera dead_cam;
private Camera cam;
void Start()
{
dead_cam = cameraDead.GetComponent<Camera>();
cam = camera.GetComponent<Camera>();
dead_cam.enabled = false;
}
//....
void respawn(){
cameraDead.transform.position = new Vector3(player.transform.position.x, cameraDead.transform.position.y, player.transform.position.z);
dead_cam.enabled = true;
cam.enabled = false;
player.transform.SetPositionAndRotation(new Vector3(-27f, 0f, -8.35f), Quaternion.Euler(new Vector3(0,90,0)));
isDead = true;
}