/* #########
############
#############
## ###########
### ###### #####
### ####### ####
### ########## ####
#### ########### ####
#### ########### #####
##### ### ######## #####
##### ### ######## ######
###### ### ########### ######
###### #### ############## ######
####### ##################### ######
####### ###################### ######
####### ###### ################# ######
####### ###### ###### ######### ######
####### ## ###### ###### ######
####### ###### ##### #####
###### ##### ##### ####
##### #### ##### ###
##### ### ### #
### ### ###
## ### ###
__________#_______####_______####______________
身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。
我们的未来没有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 = "加載成功";
}
}
}