Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Camera.main有哪些替代方案?_Unity3d - Fatal编程技术网

Unity3d Camera.main有哪些替代方案?

Unity3d Camera.main有哪些替代方案?,unity3d,Unity3d,无论在哪里,我都看到使用Camera.main是一种不好的做法,我们不应该使用它。那么,获取主摄影机对象的最佳实践是什么呢?您应该在该摄影机的生命周期中存储一次对每个摄影机的引用,然后在代码的其余部分使用存储的引用。例如: // Reference initialization public Camera mainCamera; // Game code, executed once per frame or more void Update() { Vector3 pos = mai

无论在哪里,我都看到使用
Camera.main
是一种不好的做法,我们不应该使用它。那么,获取主摄影机对象的最佳实践是什么呢?

您应该在该摄影机的生命周期中存储一次对每个摄影机的引用,然后在代码的其余部分使用存储的引用。例如:

// Reference initialization
public Camera mainCamera;

// Game code, executed once per frame or more
void Update()
{
    Vector3 pos = mainCamera.transform.position;
}
基本上与使用
FindObjectByTag(“MainCamera”)
相同,因此相当昂贵

场景中的主摄影机。如果场景中没有此类摄影机,则返回
null
。此属性在内部使用
FindGameObjectsWithTag
,不缓存结果如果每帧使用多次,建议缓存Camera.main的返回值。

“不使用它”实际上是指每帧的用法

如果你只使用一次,它没有什么坏处:

//如果您可以通过Inspector引用已存在的内容,则始终是最佳选择
[SerializeField]专用摄像头(U摄像头);
私人空间
{
//作为一种后备方法,只需获取一次,例如,在您无法引用的预制中
//现场摄像机
如果(!\u camera)\u camera=camera.main;
}

谢谢。然后我只需要将摄影机对象从层次窗口拖动到mainCamera公共变量中的脚本组件中,对吗?