您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity编程 >
    Runtime切换摄像机
    时间:2015-03-10 15:16 来源:互联网 作者:脚印 浏览:收藏 挑错 推荐 打印



    为了实现相机的切换,需要禁用一个、启用另一个。首先创建一个简单的场景:一个cube、3个相机。

    为了遍历这些摄像机,我们可以使用tag标记来实现。选取摄像机对象,放入一个列表中,然后使用for循环遍历,

    找到camera组件,然后禁用所有的。最后启用指定的摄像机。


    第一创建一个函数接收整型数字为参数,来指定要激活某个摄像机


    function Update()
    {
        if(Input.GetKey("1"))
        {     
           Debug.Log("Using Camera One");     
           camSwap(1);     
        }     
    }
    
    function camSwap(currentCam : int)
    {     
    }


    Runtime切换摄像机



    第二:    在camSwap函数内,创建一个for循环来查找所有含有cam标记的对象,

              cam标记被应用在场景中的所有三个摄像机上,使用GetComponent来禁用所有的摄像机


    function camSwap(currentCam : int){     
     var cameras = GameObject.Fi ndGameObjectsWithTag("cam");     
     for (var cams : GameObject in cameras){     
       cams.GetComponent(Camera).enabled = false;     
     }     
    }


    第三:    最后,选择到你想要摄像机,传入参数序号,并组成摄像机名称,然后使用Find和GetComponent函数找到它,然后启用Camera组件


    var oneToUse : String = "Camera"+currentCam;
    gameObject.Find(oneToUse).GetC omponent(Camera).enabled = true;



    所有的摄像机都应该命名为:Camera1,Camera2,Camera3等等。

    参考图片设置标记,脚本如下:


    function Update () {     
     if(Input.GetKey("1")){     
       Debug.Log("Using Camera One");     
       camSwap(1);     
     }     
     if(Input.GetKey("2")){     
       Debug.Log("Using Camera Two");     
       camSwap(2);     
     }     
     if(Input.GetKey("3")){     
       Debug.Log("Using Camera Three");     
       camSwap(3);     
     }     
    }     
    function camSwap(currentCam : int){     
     var cameras = GameObject.Fi ndGameObjectsWithTag("cam");     
     for (var cams : GameObject in cameras){     
       cams.GetComponent(Camera).enabled = false;     
     }          
     var oneToUse : String = "Camera"+currentCam;     
     gameObject.Find(oneToUse).GetC omponent(Camera).enabled = true;      
    }     
    C# Equivalent     
    using UnityEngine;     
    using System.Collections;     
    public class camControl : MonoBehaviour {     
     void Update () {     
       if(Input.GetKey("1")){     
        Debug.Log("Using Camera One");       
        camSwap(1);     
       }     
       if(Input.GetKey("2")){     
        Debug.Log("Using Camera Two");     
        camSwap(2);     
       }     
       if(Input.GetKey("3")){     
        Debug.Log("Using Camera Three");       
        camSwap(3);     
       }     
     }     
     void camSwap(int currentCam){       
       GameObject[] cameras = GameObj ect.FindGameObjectsWithTag("cam ");     
       foreach (GameObject cams in cameras){     
        Camera theCam = cams.GetC omponent<Camera>() as Camera;     
        theCam.enabled = false;     
       }          
       string oneToUse = "Camera"+currentCam;     
       Camera usedCam = GameObject.F ind(oneToUse).GetComponent<Camer a>() as Camera;     
       usedCam.enabled = true;     
     }     
    }



    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
    标签:Unity之家