无法更改相机FOV C#

时间:2016-05-21 22:10:42

标签: c# unity3d

我正在尝试为谷歌纸板制作VR游戏,我试图在2秒后设置相机的FOV,但是我收到了错误:

  

“NullReferenceException:对象引用未设置为的实例   对象CameraFOV.Start“

using UnityEngine;
using System.Collections;
public class CameraFOV : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
        System.Threading.Thread.Sleep(2000);
        Camera.current.fieldOfView = 60;
    }

    // Update is called once per frame
    void Update()
    {

    }
}

1 个答案:

答案 0 :(得分:4)

使用Camera.main代替Camera.current。此外,Unity API不是线程安全的。你不能像这样暂停主线程。如果您想等待两秒钟然后将所有摄像机设置为相同的FOV,那么您可以使用:

void Start()
{
    //This starts the coroutine.
    StartCoroutine(PauseAndSetFOV());     
}

// This is a coroutine.
private IEnumerator PauseAndSetFOV()
{
    // This waits for a specified amount of seconds
    yield return new WaitForSeconds(2f);

    // This sets all the cameras FOV's after waiting two seconds.
    for(int i = 0; i < Camera.allCamerasCount; i++)
    {
        Camera.allCameras[i].fieldOfView = 60;
    }
}

返回IEnumerator的函数是一个协程。这是在Unity中同时执行多项操作的方法。但是线程。