本文共 3198 字,大约阅读时间需要 10 分钟。
闲话少说,上代码,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爪爪学院查找。
转载地址:http://ygbeo.baihongyu.com/