포스팅목표)
런타임으로 firebase 저장소를 사용하여 유니티내에서 이미지파일을 클라우드에 올리고
저장소에 올라간 이미지의 다운로드 링크를 가져와서 큐알코드를 생성할 수 있다.
이전글)
https://workdiarysometimesnot.tistory.com/101
유니티)firebase 저장소 사용해서 이미지 업로드하기
1. firebase 계정 생성 https://firebase.google.com/ Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com 계정과 프로젝트를
workdiarysometimesnot.tistory.com
firebase 저장소를 사용하는 자세한 내용은 윗 글에 있습니다.
https://github.com/micjahn/ZXing.Net/releases
Releases · micjahn/ZXing.Net
.Net port of the original java-based barcode reader and generator library zxing - micjahn/ZXing.Net
github.com
qrcode 생성을 위해 위 링크에서 최신버전을 다운받아줍니다.
압축풀고 unity폴더로 가보면 zxing.unity.dll이 있습니다.
이걸 유니티에 임포트 해주면 해당 기능을 사용할 수 있습니다.
unity에서 Assets > Plugins 폴더에 해당 dll을 임포트해줍니다.
준비끝!
[QRcode 생성하기]
using ZXing;
using ZXing.QrCode;
public void SetLink(string link)
{
//바코드생성
BarcodeWriter barcode = new BarcodeWriter
{
//바코드세팅
Format = BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions
{
Height = 256,
Width = 256
}
};
//링크 바코드화
Color32[] encoded = barcode.Write(link);
//바코드 텍스쳐화
Texture2D qrcode = new Texture2D(256, 256);
qrcode.SetPixels32(encoded);
qrcode.Apply();
_rawImage.texture = qrcode;
}
해당 함수는 큐알로 연결될 링크를 받아서 큐알코드를 생성해주는 함수입니다.
[클라우드에 업로드한 파일의 다운로드 링크 받아오기]
using Firebase.Extensions;
using Firebase.Storage;
using System.Threading.Tasks;
public class StorageManager : SingletonBehaviour<StorageManager>
{
public FirebaseStorage storage;
public StorageReference reference;
void Awake()
{
storage = FirebaseStorage.DefaultInstance;
reference = storage.GetReferenceFromUrl("gs://주소.appspot.com/");
Debug.Log("INIT Firebase");
}
public void UploadGetDownLink(string name, byte[] data, Action<string> SendLink = null)
{
StorageReference fileRef = reference.Child(name);
fileRef.PutBytesAsync(data).ContinueWithOnMainThread((Task<StorageMetadata> task) =>
{
if (task.IsFaulted || task.IsCanceled)
{
Debug.Log(task.Exception.ToString());
}
else
{
StorageMetadata metadata = task.Result;
Debug.Log("Finished uploading");
fileRef.GetDownloadUrlAsync().ContinueWithOnMainThread((Task<Uri> uriTask) =>
{
string uri = uriTask.Result.ToString();
SendLink?.Invoke(uri);
});
}
});
}
}
여기서 GetDownloadUrlAsync()가 업로드파일의 download link를 받아오는 함수입니다.
다운링크가 받아와지면 uriTask의 결과에 저장되니까
해당 링크를 큐알코드 함수에 매개변수로 넣고 실행하면 됩니다!
끝
오늘의 유니티 주식
심상치않다...
'아때(unity)' 카테고리의 다른 글
유니티) Scoped registries (0) | 2023.06.28 |
---|---|
유니티)firebase 연동시 오류들 (0) | 2023.06.27 |
유니티)firebase 저장소 사용해서 이미지 업로드하기 (0) | 2023.05.31 |
유니티) webcamtexture size 16x16 으로 나올때 (0) | 2023.04.13 |
유니티) Pico VR 개발 시작하기 (pico4, mac) (0) | 2023.03.13 |
댓글