/* ######### ############ ############# ## ########### ### ###### ##### ### ####### #### ### ########## #### #### ########### #### #### ########### ##### ##### ### ######## ##### ##### ### ######## ###### ###### ### ########### ###### ###### #### ############## ###### ####### ##################### ###### ####### ###################### ###### ####### ###### ################# ###### ####### ###### ###### ######### ###### ####### ## ###### ###### ###### ####### ###### ##### ##### ###### ##### ##### #### ##### #### ##### ### ##### ### ### # ### ### ### ## ### ### __________#_______####_______####______________ 身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。 我们的未来没有BUG * ============================================================================== * Filename: camRocode * Created: $time$ * Author: WYC * Purpose: 掃描二維碼加載圖片 * ============================================================================== */ using UnityEngine; using System.Collections; using UnityEngine.UI; using ZXing; public class camRocode : MonoBehaviour { [Header("UI")] public Image image; public RawImage cameraTexture; public Text txt; private Color32[] data; private bool IsScan; private WebCamTexture webCameraTexture; private BarcodeReader barcodeReader; private float timer = 0; IEnumerator Start() { barcodeReader = new BarcodeReader(); yield return Application.RequestUserAuthorization(UserAuthorization.WebCam); if (Application.HasUserAuthorization(UserAuthorization.WebCam)) { WebCamDevice[] devices = WebCamTexture.devices; string devicename = devices[0].name; webCameraTexture = new WebCamTexture(devicename, 400, 300); cameraTexture.texture = webCameraTexture; webCameraTexture.Play(); IsScan = true; } } int width; void ScreenChange()//屏幕横竖屏切换 { if (width == Screen.width) return; width = Screen.width; if (width > Screen.height) { cameraTexture.transform.localEulerAngles = Vector3.zero; } else { cameraTexture.transform.localEulerAngles = new Vector3(0, 0, -90); } } void Update() { if (IsScan) { timer += Time.deltaTime; if (timer > 0.5f) //0.5秒扫描一次 { StartCoroutine(ScanQRcode()); timer = 0; } } // ScreenChange(); } IEnumerator ScanQRcode() { data = webCameraTexture.GetPixels32(); DecodeQR(webCameraTexture.width, webCameraTexture.height); yield return new WaitForEndOfFrame(); } private void DecodeQR(int width, int height) { var br = barcodeReader.Decode(data, width, height); if (br != null) { //txt.text = br.Text; //IsScan = false; StartCoroutine(Load(br.Text)); } } IEnumerator Load(string text) { txt.text = "正在加載"; //请求WWW WWW www = new WWW(text); yield return www; if (www != null && string.IsNullOrEmpty(www.error)) { //获取Texture Texture2D texture = www.texture; //创建Sprite Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); image.sprite = sprite; txt.text = "加載成功"; } } }