我正在尝试为谷歌纸板制作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()
{
}
}
答案 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中同时执行多项操作的方法。但是不线程。