Компонент камеры возвращает ноль - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь отключить компонент Камера для переключения между моими камерами.Но когда я пытаюсь получить компонент камеры моего GameObject, он возвращает ноль.

Вот мой GameObject:

enter image description here

И вотгде мой код падает:

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;
}

В сообщении об ошибке говорится, что указатель возвращает ноль.Таким образом, он не мог найти компонент.Заранее спасибо.

1 Ответ

0 голосов
/ 13 декабря 2018

Когда компонент отключен или игровой объект неактивен, вы не можете получить его с помощью GetComponent.Судя по вашему коду, компонент CameraDead сначала отключен, а затем вы пытаетесь получить его при включении.

Это можно легко решить с помощью кэширования компонентов.Примерно так:

  • Во-первых, оставьте оба компонента камеры включенными в сцене.

    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;
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...