如何从统一3d中的另一个对象访问相机

时间:2013-02-14 11:47:56

标签: c# object camera unity3d raycasting

我的脚本附加到角色控制器。

我宣布,

public Camera camera;
在课堂上

在我给出的更新功能中,

if(Input.GetMouseButtonDown(0)){ 
Ray ray = camera.ScreenPointToRay(Input.mousePosition); 
if (Physics.Raycast (ray, out hit3, 400.0F)){
    print(hit3.collider.gameObject.name); 
}
}

但我收到错误

"UnassignedReferenceException: 
The variable camera of 'characterScript' has not been assigned.
You probably need to assign the camera variable of the 
characterScript script in the inspector."

帮助我找到一个好的解决方案。

先谢谢。

3 个答案:

答案 0 :(得分:3)

将其拖放到UI中的变量中,或者在脚本中添加此位以在启动时自动执行此操作:

void Start()
{ 
    camera = (Camera) GameObject.FindObjectOfType(typeof(Camera));
}

演员表可能是多余的。 此外,只有一台摄像机才能正常工作。

答案 1 :(得分:3)

您还可以使用Camera类的以下静态变量从任何地方访问摄像机:

Camera.current我们正在渲染的相机。

Camera.main第一个启用的相机标记为“MainCamera”。

Camera.allCameras返回场景中所有已启用的摄像头。

无需查找,Camera类负责跟踪我们的实例:)

第h

杰罗姆

答案 2 :(得分:2)

你没有初始化你的相机。你必须通过unity3D的UI设置它。只需将相机拖放到公共参数中即可。