在我的场景中,我有一个 MainCamera 和一个 MiniMapCamera。我还有一个HUD,目前由两个相机绘制。我想将它从 MiniMapCamera 中删除,但是当我Camera.current.name
用来检查正在渲染的相机时,它不起作用。我在一个Update()
函数中这样做。我应该在其他地方尝试吗?
问问题
2322 次
2 回答
2
除了杰达克的回答。您可以选择每个相机应该渲染的图层。
如果您在层次结构中选择它,您可以在 的检查器中看到Culling Mask组合框Camera
。通过它您可以检查相机应该渲染的图层。因此,您可以将 a 分配layer
给您的 gui 元素,而MiniMapCamera
不要渲染它。
于 2013-06-12T07:31:35.960 回答
1
我假设您有切换相机的机制?如果是这种情况,请使用该机制来跟踪当前处于活动状态的相机。
我不知道这是否仍然正确,但是当您在Unity 的编辑器Camera.current
中运行应用程序时曾经遇到过问题。如果情况仍然如此,您可以尝试构建您的应用程序并查看返回的值。Camera.current.name
[更新]
或者您可以将您的摄像机存储为游戏对象,并将活动摄像机与存储的摄像机进行比较以确定哪个是活动的。这个解决方案只能间歇性地使用,因为FindObjectsOfType
每帧都不是一个好主意。
public class CurrentCamera : MonoBehaviour {
public Camera minimapCamera;
public Camera mainCamera;
void FindActiveCamera(){
Camera[] cameras = FindObjectsOfType(typeof(Camera)) as Camera[];
foreach (Camera cam in cameras) {
if(Camera.main == mainCamera)Debug.Log("Found main camera");
if(Camera.main == minimapCamera)Debug.Log("Found minimap Camera");
}
}
void Update(){
FindActiveCamera();
if(Input.GetButtonDown("Fire1")){
minimapCamera.enabled = false;
mainCamera.enabled = true;
}
if(Input.GetButtonDown("Fire2")){
minimapCamera.enabled = true;
mainCamera.enabled = false;
}
}
}
[更新2]
为了让 Camera.main 正确注册您的相机,相机对象的Tag
必须设置为MainCamera
. 可以设置多个MainCameras
,只需确保禁用Camera
非活动相机上的组件,否则渲染将不知道使用哪个。
于 2013-06-11T23:43:04.997 回答