250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- touchdesinger
- touchdesigner displace
- 터치디자이너 timeline
- touchdesigner GPU
- 터치디자이너 if
- ableton live 10
- 터치디자이너 강의
- displace
- 터치디자이너 replicator
- touchdesigner particle
- 터치디자이너 python
- 터치디자이너 Instancing
- 파이썬 if
- 터치디자이너 오퍼레이터
- 터치디자이너 인터페이스
- 터치디자이너 클론
- 터치디자이너 list
- 터치디자이너 튜토리얼
- 터치디자이너 에이블톤
- 터치디자이너 함수
- 터치디자이너 interface
- TDableton
- particleGPU
- 터치디자이너
- TouchDesigner
- 터치디자이너 파이썬
- 터치디자이너 참조
- 파이썬reference
- 터치디자이너 reference
Archives
- Today
- Total
caLAB
[유니티 개발]유니티 바코드 인식 본문
728x90
해당 글에는 QR코드에 원하는 데이터를 json형태로 만들어서 생성하고,
이를 유니티 프로젝트에서 인식시켰을 때 json데이터를 parsing해서 유니티에서 읽어오는 것을 다룬다.
json데이터 QR코드 만들기
아래 예시와 같이 원하는 정보를 json 데이터로 만든다.
나는 이름과 아이디를 데이터로 만들었다.
https://ko.qr-code-generator.com/
유니티 QR코드 인식 zxing 활용.
해당 github 프로젝트를 다운 받아서.
https://github.com/micjahn/ZXing.Net
Unity Demo에 있는 zxing.unity.dll 파일을 유니티 프로젝트의 Asset의 하위에 둔다.
*위치 중요. 폴더에 들어가 있을 경우 인식 못하는 경우 발견.
스크립트는 아래와 같이 작성하였다.
jsonLoader는 json데이터를 유니티에서 읽을 수 있는 데이터로 parsing하는 것이고
TestQRcode 스크립트에서는 QR코드의 데이터를 식별한다.
해당 QR코드에 기록되어 있는 json데이터를 확인 후 name값이 CannedBi일 경우에 이벤트가 발생하게 하였다.
*한 번 체크한 후 더이상 값을 체크하지 않는 기능을 넣어야 됨. 중복 체크 됨.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JsonLoader : MonoBehaviour
{
public static JsonInfo loadJson(string jsonText)
{
JsonInfo data = JsonUtility.FromJson<JsonInfo>(jsonText);
return data;
}
}
public class JsonInfo
{
public int id;
public string name;
}
using System.Collections.Generic;
using System.Collections;
using System;
using UnityEngine;
using ZXing; //ZXing.dll 임포트 후 선언.
using UnityEngine.UI;
using UnityEngine.Events;
using MoreMountains.Feedbacks;
public class TestQRcode : MonoBehaviour
{
private Rect screenRect;
private WebCamTexture camTexture;
static string strBarcodeRead;
public RawImage image;
public GameObject webcam;
public float waitTime = 1.5f;
[Header("Feedbacks")]
public UnityEvent feedBack;
void Start()
{
//카메라 화면 크기 조정 //기본 값 스크린 너비, 높이
camTexture = new WebCamTexture();
camTexture.requestedHeight = Screen.height;
camTexture.requestedWidth = Screen.width;
screenRect = new Rect(0, 0, Screen.width, Screen.height);
strBarcodeRead = null;
//읽어 들이는 웹 캠 텍스쳐 값이 널이 아니면
if (camTexture != null)
{
//QR코드 인식 후 씬이 넘어간다면 반드시 Stop을 해주어야 카메라가 꺼진다.
//만약 정지 시키고 싶다면 -> camTexture.Stop();
//카메라 동작 플레이.
camTexture.Play();
}
image.texture = camTexture;
}
private void Update()
{
if(camTexture.isPlaying)
{
try
{
//Decode를 통한 QRcode 읽어 들이기.
//만약 결과 값이 널이 아니면
IBarcodeReader barcodeReader = new BarcodeReader();
var result = barcodeReader.Decode(camTexture.GetPixels32(), camTexture.width, camTexture.height);
if (result != null)
{
//인식한 QRcode의 텍스트 값을 로그.
Debug.Log(result.Text);
strBarcodeRead = result.Text;
JsonInfo data = JsonLoader.loadJson(result.Text);
if (data.name == "CannedBi")
{
Debug.Log("this is cannedBi get character : " + data.id);
//DB.Instance.addData(data.qr_id, data.name);
//camTexture.Stop();
StartCoroutine("Loading", waitTime);
}
}
}
catch (Exception ex)
{
Debug.LogWarning(ex.Message);
}
}
}
IEnumerator Loading(float time)
{
yield return new WaitForSeconds(time);
feedBack.Invoke();
//ActiveManager.Instance.SetCurrentPage(mPageInfo.selectPage);
}
}
728x90
반응형
'Unity > 유니티 개발' 카테고리의 다른 글
[유니티] URP 포스트프로세싱 (a.k.a PP) (0) | 2023.01.31 |
---|---|
[유니티] built in 2 URP (feat. 2021 +) (0) | 2023.01.31 |
[유니티 개발] Figma To Unity (2) | 2022.06.29 |
[유니티 개발] Addressable Asset을 활용해서 asset 원격으로 관리하기2(feat. 활용 코드) (0) | 2022.06.28 |
[유니티 개발] Addressable Asset을 활용해서 asset 원격으로 관리하기1(feat. 세팅) (0) | 2022.06.28 |
Comments