일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 터치디자이너 reference
- 터치디자이너 오퍼레이터
- 터치디자이너 튜토리얼
- 터치디자이너 if
- touchdesigner GPU
- particleGPU
- 터치디자이너 파이썬
- 파이썬reference
- 터치디자이너 python
- 터치디자이너 list
- 터치디자이너 클론
- 터치디자이너 Instancing
- 터치디자이너 강의
- 터치디자이너 replicator
- TouchDesigner
- 파이썬 if
- displace
- touchdesinger
- 터치디자이너 함수
- TDableton
- 터치디자이너 에이블톤
- touchdesigner particle
- 터치디자이너 인터페이스
- ableton live 10
- 터치디자이너 참조
- 터치디자이너
- 파이썬
- 터치디자이너 timeline
- 터치디자이너 interface
- touchdesigner displace
- Today
- Total
caLAB
[유니티 개발] 유니티 fireBase연동(이미지 업로드 / 다운로드) 본문
fireBase 뭔가 이것저것 설정해야 될게 많고 귀찮다.
무튼... firebase유니티 연동하기 시작!
1. firebase Console에 가서 프로젝트 새로 생성
시키는 대로 프로젝트를 만든다.
패키지 이름만 유니티 패키지 이름과 통일시켜주면된다.
2. 그 이후 프로젝트 개요 페이지로 가서 프로젝트 설정을 누른다.
그러면 아래와 같은 화면이 나오는데 SHA인증을 하라고 한다.
(나는 여기서 삽질을 꽤 했다.)
*SHA 인증 하는 방법
1. 유니티 platform을 Android로 전환한다.
2. Player Setting / Player / Publishing / Keystore Manager를 누른 후에 Password를 설정하고 key를 생성한다.
3. 그 이후 cmd를 열어서 keystore가 저장된 위치로 간다.
* cd는 우측 파일로 이동 하는 것임.
* 꼭 keystore파일이 있는 곳으로 이동하셈... 그래야 keystore 접근 가능.
cd C:\Users\jeond\Downloads
4. 해당 코드를 입력하고 password를 입력.
keytool -list -v -keystore user.keystore
5. sha1을 복사해서 sha 인증서 지문에 복사하면 됨
3. realtime database를 생성해준다.
4. storage도 생성해주고 rules에서 아래와 같이 allow를 read, write양쪽에 해줘야 데이터 업로드와 다운로드가 제대로 이루어진다.
5. 다시 프로젝트 개요 / 프로젝트 설정 / SDK 설정 및 구성에 있는 다운로드 표시되어 있는 google-services.json을 다운 받는다.
6. 유니티 Assets에 google-services.json을 옮겨준다.
7. firebase의 SDK 패키지를 가져온다. 오늘 필요한 것은 storage패키지이다.
다운은 아래 링크에서 받아라.
https://firebase.google.com/docs/unity/setup
8. 이미지를 load할 rawImage패널과 이미지를 업로드할 버튼을 만든다.
9. 이미지 로드하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System;
using Firebase;
using Firebase.Extensions;
using Firebase.Storage;
public class loadImage : MonoBehaviour
{
RawImage rawImage;
FirebaseStorage storage;
StorageReference storageReference;
IEnumerator imageLoad(string MediaUrl)
{
UnityWebRequest request = UnityWebRequestTexture.GetTexture(MediaUrl);
yield return request.SendWebRequest();
if(request.isNetworkError || request.isHttpError)
{
Debug.Log(request.error);
}
else
{
rawImage.texture = ((DownloadHandlerTexture)request.downloadHandler).texture;
}
}
void Start()
{
rawImage = gameObject.GetComponent<RawImage>();
//StartCoroutine(imageLoad("https://firebasestorage.googleapis.com/v0/b/fir-test-ccdb7.appspot.com/o/lemongrab.jpg?alt=media&token=36b0e5fa-dba7-4119-8dd4-dc7dce89baa9"));
//initialize storage reference
storage = FirebaseStorage.DefaultInstance;
storageReference = storage.GetReferenceFromUrl("gs://fir-test-ccdb7.appspot.com");
//get reference of image
StorageReference image = storageReference.Child("lemongrab.jpg");
//get the download link of file
image.GetDownloadUrlAsync().ContinueWithOnMainThread(task =>
{
if (!task.IsFaulted && !task.IsCanceled)
{
StartCoroutine(imageLoad(Convert.ToString(task.Result)));
}
});
}
}
10. 이미지 업로드하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase.Storage;
public class CloudStorage : MonoBehaviour
{
FirebaseStorage storage;
StorageReference reference;
private void Start()
{
storage = FirebaseStorage.DefaultInstance;
}
public void uploadFile()
{
reference = storage.RootReference.Child("lemongrab.jpg");
string localfile = "file://" + Application.streamingAssetsPath + "/lemongrab.jpg";
Debug.Log(localfile);
reference.PutFileAsync(localfile).ContinueWith(task =>
{
if (task.IsCompleted)
{
Debug.Log("successful");
}
}
);
}
}
'Unity > 유니티 개발' 카테고리의 다른 글
[유니티 개발] Firebase 데이터 getData(), setData() (0) | 2022.05.11 |
---|---|
[유니티 개발] Game Programming Pattern(SOLID 패턴) (0) | 2022.05.09 |
[유니티 개발] Json (0) | 2022.05.02 |
[유니티 개발] Addressable Asset (0) | 2022.04.25 |
[유니티 개발] 유니티 + 깃허브로 프로젝트 관리 (0) | 2022.04.25 |