unity3d 中控制手机前后摄像头切换
2012-11-08 19:36
405 查看
闲话少说,上代码,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; else rearCamName = 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(); } }
相关文章推荐
- 使用unity3D开发同时打开手机前后摄像头实例程序
- iOS疯狂详解之设备前后摄像头切换
- android高级技术之相机的前后摄像头切换
- Android自定义照相机 预览拍照 切换前后置摄像头
- Android自定义照相机 预览拍照 切换前后置摄像头
- HTML5 Canvas+JS控制电脑或手机上的摄像头实例.
- h5调用手机前后摄像头,拍照
- Android自定义照相机 预览拍照 切换前后置摄像头
- 【笔记】Android5.0前后的Camera和Camera2 预览、拍照、摄像头切换
- iphone 4 摄像头前后切换
- 没加前后摄像头切换功能的视频录制功能
- 使用HTML5技术控制电脑或手机上的摄像头
- 使用HTML5技术控制电脑或手机上的摄像头
- Android自定义照相机 预览拍照 切换前后置摄像头
- Android切换前后置摄像头并录制视频
- Unity使用WebCamTexture 实现手机前后摄像头调用
- 使用HTML5技术控制电脑或手机上的摄像头
- Android自定义照相机 预览拍照 切换前后置摄像头
- android 控制手机音量的大小 切换声音的模式
- Unity3D 使用“Shift+Tab”和“Tab”键 上下切换 UGUI下 Dropdown和inputfield等控件的控制顺序