unity3d 中控制手机前后摄像头切换

来源:互联网 发布:cc攻击 php网站防御 编辑:程序博客网 时间:2024/05/24 06:33

闲话少说,上代码,google上搜来的代码,不过里面有bug,不能顺利切换,下面的代码是已经修改过的,经测试,可以正常运行。

using System;using UnityEngine;using System.IO;using System.Collections;public class NewBehaviourScript : MonoBehaviour {//public GUITexture mytext;public UITexture mytext;private WebCamTexture frontWebcamTexture = null;private WebCamTexture rearWebcamTexture = null;private WebCamDevice[] devices;[HideInInspector]public WebCamTexture activeCam;bool flag = false ;static int cameraIndex = 0 ;/* 按钮控件 */public GameObject btn_shot ;public GameObject btn_change_camera ;     void Awake () {for( int i = 0 ; i < WebCamTexture.devices.Length ; i++ )        NGUIDebug.Log(WebCamTexture.devices[i].name);devices = WebCamTexture.devices;string frontCamName = "";string rearCamName = "";for(int i=0; i<devices.Length; i++){if (devices[i].isFrontFacing)frontCamName = devices[i].name;elserearCamName = devices[i].name;}frontWebcamTexture = new WebCamTexture(frontCamName);rearWebcamTexture = new WebCamTexture(rearCamName);frontWebcamTexture.Stop();rearWebcamTexture.Stop();activeCam = rearWebcamTexture;//mytext.material.mainTexture = rearWebcamTexture ;mytext.material.SetTexture("_MainTex", rearWebcamTexture);activeCam.Play();    }void Start(){/* 事件 */UIEventListener.Get(btn_shot).onClick += OnShotButtonClick ;UIEventListener.Get(btn_change_camera).onClick += OnCameraChangeClick ;NGUIDebug.Log ("Active camera: " + activeCam);}public bool HasFrontCamera(){if (Application.isEditor)    return false;return frontWebcamTexture.deviceName != "";}public void OnShotButtonClick (GameObject go) {SavePhoto() ;}/* 相机切换 */public void OnCameraChangeClick (GameObject go) {if (!HasFrontCamera())return;activeCam.Stop ();if (activeCam == frontWebcamTexture){NGUIDebug.Log ("Switching to rear cam...");//renderer.material.mainTexture = rearWebcamTexture;//mytext.material.mainTexture = rearWebcamTexture ;mytext.material.SetTexture("_MainTex", rearWebcamTexture);activeCam = rearWebcamTexture;}else{NGUIDebug.Log ("Switching to front cam...");//mytext.material.mainTexture = frontWebcamTexture ;mytext.material.SetTexture("_MainTex", frontWebcamTexture);activeCam = frontWebcamTexture;}NGUIDebug.Log ("... done.");NGUIDebug.Log("Trying to Play the active WebCamTexture: (" + activeCam + ")");activeCam.Play();}     public void ShowCamera()    {        //myCameraTexture.guiTexture.enabled = true;mytext.enabled = true;        activeCam.Play();NGUIDebug.Log("-------------show--------->>>>>" + mytext) ;    }     public void HideCamera()    { NGUIDebug.Log("-------------hide--------->>>>>" + mytext) ;        //myCameraTexture.guiTexture.enabled = false;        mytext.enabled = false;activeCam.Stop();     }
    public void SavePhoto() {NGUIDebug.Log("***************oh fuck***********************finally worked!!!") ;Texture tex = mytext.material.mainTexture;Texture2D tx = new Texture2D(activeCam.width, activeCam.height) ;tx.SetPixels(activeCam.GetPixels());byte[] byte_photo = tx.EncodeToPNG() ;NGUIDebug.Log("#####length######################333333" + byte_photo.Length) ;string photoName = "nimei.png" ;FileStream fs = new System.IO.FileStream("/mnt/sdcard/DCIM/Camera/nimei.png", System.IO.FileMode.Create);    fs.Write(byte_photo,0,byte_photo.Length);    fs.Close();}}


 

原创粉丝点击