Механизм переключения камеры - PullRequest
0 голосов
/ 27 декабря 2018

В рамках моего исследовательского проекта я тестировал механизм переключения камер.

Есть две вещи, которые я смог заметить с помощью приведенного ниже кода.До того, как я применил этот код, основная камера была показана по умолчанию.Тем не менее, теперь последняя камера отображается по умолчанию, и даже когда я отключаю скрипт, я не уверен, как решить эту проблему.Кроме того, приведенный ниже код создает исключение ArrayIndexOutofRangeException в строке 46 в камерах [currentCameraIndex - 1] .enabled = false;в предложении else.

Кто-нибудь из вас, ребята, знает, что происходит и как я могу это решить?

Большое вам спасибо!

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour
{
public Camera[] cameras;
private int currentCameraIndex;

// Use this for initialization
void Start()
{
    currentCameraIndex = 0;

    //Turn all cameras off, except the first default one
    for (int i = 1; i < cameras.Length; i++)
    {
        cameras[i].enabled = false;
    }

    //If any cameras were added to the controller, enable the first one
    if (cameras.Length > 0)
    {
        cameras[0].enabled = true;
        Debug.Log("Camera with name: " + cameras[0].name + ", is now enabled");
    }
}

// Update is called once per frame
void Update()
{
    //If the c button is pressed, switch to the next camera
    //Set the camera at the current index to inactive, and set the next one in the array to active
    //When we reach the end of the camera array, move back to the beginning or the array.
    if (Input.GetKeyDown(KeyCode.C))
    {
        currentCameraIndex++;
        Debug.Log("C button has been pressed. Switching to the next camera");
        if (currentCameraIndex < cameras.Length)
        {
            cameras[currentCameraIndex - 1].enabled = false;
            cameras[currentCameraIndex].enabled = true;
            Debug.Log("Camera with name: " + cameras[currentCameraIndex].name + ", is now enabled");
        }
        else
        { 
            cameras[currentCameraIndex - 1].enabled = false;
            currentCameraIndex = 0;
            cameras[currentCameraIndex].enabled = true;
            Debug.Log("Camera with name: " + cameras[currentCameraIndex].name + ", is now enabled");
        }
    }
}
}

1 Ответ

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

В коде нет проблем, только что проверили в единстве.Но я рекомендую вам проверить при печати, имеет ли камера какие-либо значения

if (Input.GetKeyDown(KeyCode.C))
{
    if (cameras.Length > 0)
    {
        DoStuff();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...