[TIL] Unity + Firebase
본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
Unity에 Firebase를 붙이면서 알게 된 핵심 개념들을 짧게 정리하기
Firebase는 인터넷 너머 서버와 통신하기 때문에, 앱이 켜지자마자 바로 쓸 수 없다. 준비가 끝날 때까지 기다려야 한다.
그래서 초기화를 담당하는 객체(FirebaseInitializer)를 따로 두고, 다른 코드들은 "Firebase 준비됐어?"를 물어본 뒤에 동작하도록 만든다.
bool isReady = await FirebaseInitializer.Instance.WaitForInitializationAsync();
if (!isReady) return; // 준비 안 됐으면 중단
위 코드의 await가 비동기다.
await는 "이거 끝날 때까지 기다려, 단 화면은 멈추지 말고"라는 뜻.AuthManager, ProfileManager 같은 매니저들은 게임 전체에 딱 하나만 존재해야 한다. 그리고 어디서든 쉽게 접근할 수 있어야 한다.
private static FirebaseInitializer instance;
public static FirebaseInitializer Instance => instance;
private void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject); // 씬 바뀌어도 유지
}
else
{
Destroy(gameObject); // 중복이면 자기 자신 제거
}
}
이렇게 하면 FirebaseInitializer.Instance로 어디서든 그 하나뿐인 객체에 접근할 수 있다.
static = 객체마다가 아니라 클래스 전체에 하나만 존재DontDestroyOnLoad = 씬이 바뀌어도 파괴되지 않음 (로그인 정보 유지에 필요)Firebase 관련 코드를 한 덩어리로 짜지 않고, 역할별로 매니저를 나눴다.
| 매니저 | 역할 |
|---|---|
FirebaseInitializer | Firebase 켜기 (App / Database / Auth 준비) |
AuthManager | 회원가입 / 로그인 / 로그아웃 |
ProfileManager | 닉네임 등 프로필 저장 / 불러오기 |
ScoreManager | 점수 저장 / 불러오기 |
FirebaseInitializer가 켜둔 Auth, Database를 다른 매니저들이 꺼내 쓰는 구조다. (집의 두꺼비집을 올려두면, 각 방은 콘센트에 플러그만 꽂으면 되는 것과 같다.)