闲话少说,上代码,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{
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 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();
}
}
更多unity2018的功能介绍请到paws3d爪爪学院查找。