在Unity里管理多个相机(Camera)是一个挺痛苦的事情,“Camera Preview”也不是很实用,窗口太小,比例也不能调整。

在众多的相机中禁用,启用来查看相机位置设置视角,非常烦琐。

Security Camera的目的就是让这个过程简化。只要将脚本放进项目目录,并且拖拽到场景中每个相机上,

包括MainCamera。现在你就可以快速的切换查看各个相机的实际效果,在Unity的层次视图(Hierarchy)点击你要设置的相机,

就可以在游戏视图中看到这个相机的效果了,不必再一个个的去关闭其他相机了。

要注意的是要使用Security Camera脚本,你应该给每个相机一个唯一的名称以及确保有个主相机且标签tag为“MainCamera”,

如果你忘记这样做。系统会提醒你。另外脚本还提供了一个静态方法,叫“ChangeCamera”,

该方法只需要一个字符串,就可以用脚本快速切换相机了。


像下面这样:



using UnityEngine;
using System.Collections;
 
public class CameraSwap : MonoBehaviour
{
    void Update ()
    {
        //pressing 0, 1, 2, and 3 will swap before the cameras named "Main Camera",
        //"Camera 1", "Camera 2", and "Camera 3" which have Security Camera added:
        if (Input.GetKeyDown(KeyCode.Alpha0)) {
            SecurityCamera.ChangeCamera("Main Camera");
        }
        if (Input.GetKeyDown(KeyCode.Alpha1)) {
            SecurityCamera.ChangeCamera("Camera 1");
        }//Unity3D教程手册:www.unitymanual.com
        if (Input.GetKeyDown(KeyCode.Alpha2)) {
            SecurityCamera.ChangeCamera("Camera 2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha3)) {
            SecurityCamera.ChangeCamera("Camera 3");
        }
    }
}


OK。赶快测试下吧。。。



其他办法管理摄像机


内容描述:这章,我们来学习一下同个场景中多个摄像机怎么切换。


首先,我们来搭建一下场景,2个cube,3个camera,1个平行光。如下

  

 

随便调整一下三个摄像机的位置,例如视角如下


 


侧视图

 

前视图

 


顶视图。



接着我们创建一个空对象 GameObject -> Create Empty 命名为CamearController,用来控制逻辑。


然后我们在Project面板中创建一个js脚本。

编写如下代码


1.  var camera1:GameObject;
2.  var camera2:GameObject;
3.  var camera3:GameObject;
4.  
5.  function Update () 
6.  {
7.          if(Input.GetKeyUp(KeyCode.Alpha1))
8.          {
9.                  onActiveFalse();
10.                  camera1.active=true;
11.          }else if(Input.GetKeyUp(KeyCode.Alpha2))
12.          {
13.                  onActiveFalse();
14.                  camera2.active=true;
15.          
16.          }else if(Input.GetKeyUp(KeyCode.Alpha3))
17.          {
18.                  onActiveFalse();
19.                  camera3.active=true;
20.          }
21.  }
22.  function onActiveFalse()
23.  {
24.          camera1.active=false;
25.          camera2.active=false;
26.          camera3.active=false;
27.  }

复制代码 代码的内容是,程序运行时,按下1,2,3的数字键会切换场景中的摄像头。



主要内容就是  摄像机.active属性的设置。



写完代码后,我们把这个js代码拖到Hierarchy面板中的CamearController物体上。确保这个物体被选中,在Inspector中,我们能够看到代码中申明的变量camera1,camera2,camera3



 

2011-9-26 13:35:02 上传

下载附件 (18.04 KB)




将Hierarchy面板中的摄像机,拖进None(Game Object)的位置。



 



保存,运行,按数字键1,2,3即可进行摄像机的切换。