콘솔로 이동

Unity용 Firebase 실시간 데이터베이스 시작하기

Firebase 실시간 데이터베이스는 NoSQL 클라우드 데이터베이스를 사용하여 데이터를 저장하고 동기화합니다. 모든 클라이언트에서 실시간으로 데이터가 동기화되고 앱이 오프라인일 때도 데이터를 사용할 수 있습니다.

시작하기 전에

실시간 데이터베이스를 사용하려면 먼저 다음 작업을 해야 합니다.

  • Unity 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    • Unity 프로젝트에서 현재 Firebase를 사용하고 있다면 이미 등록되어 Firebase용으로 구성된 것입니다.

    • Unity 프로젝트가 없는 경우 샘플 앱을 다운로드할 수 있습니다.

  • Firebase Unity SDK(구체적으로 FirebaseDatabase.unitypackage)를 Unity 프로젝트에 추가합니다.

Unity 프로젝트에 Firebase를 추가할 때 Firebase Console 및 열려 있는 Unity 프로젝트 모두에서 작업을 수행해야 합니다. 예를 들어 콘솔에서 Firebase 구성 파일을 다운로드한 후 이 파일을 Unity 프로젝트로 옮기는 작업이 필요합니다.

공개 액세스 설정

실시간 데이터베이스가 제공하는 선언적 규칙 언어로 데이터의 구조, 색인 생성 방법 및 데이터를 읽거나 쓸 수 있는 조건을 정의할 수 있습니다. 기본적으로 데이터베이스에 대한 읽기 및 쓰기 액세스는 인증된 사용자만 데이터를 읽거나 쓸 수 있도록 제한되어 있습니다. 공개 액세스 규칙을 구성하면 인증을 설정하지 않고 시작할 수 있습니다. 이렇게 하면 앱을 사용하지 않는 사람을 포함하여 모두에게 데이터베이스가 공개되므로 인증을 설정할 때 데이터베이스를 다시 제한해야 합니다.

Unity 편집기용 SDK 구성

Unity 편집기에서 장면을 테스트할 때 실시간 데이터베이스를 사용할 수 있습니다. 올바른 데이터베이스 URL로 SDK를 구성한 후 데이터베이스 URL로 SetEditorDatabaseUrl을 호출하면 됩니다.

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set this before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
  }
}

규칙에서 공개 액세스를 사용하기로 결정했고 데이터베이스 URL을 설정했다면 데이터 저장 및 검색에 대한 섹션으로 이동하세요.

(선택사항) 제한된 액세스를 위한 편집기 설정

공개 액세스를 금지하는 규칙을 사용하려면 Unity 편집기에서 서비스 계정을 사용하도록 SDK를 구성해야 합니다. 이렇게 하면 테스트 하는 동안 최종 사용자로 가장하는 것도 가능합니다. 이와 같이 하려면 우선 다음 주소에서 새 p12 파일을 만듭니다.

https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR-FIREBASE-APP

서비스 계정의 생성된 이메일 주소와 비밀번호를 기록해 둡니다.

Unity 프로젝트에서 'Editor Default Resources'에 p12 파일을 배치합니다. 다음으로, 아래 코드를 추가하여 서비스 계정 사용을 초기화합니다.

using Firebase;
using Firebase.Unity.Editor;

public class MyScript: MonoBehaviour {
  void Start() {
    // Set these values before calling into the realtime database.
    FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
    FirebaseApp.DefaultInstance.SetEditorP12FileName("YOUR-FIREBASE-APP-P12.p12");
    FirebaseApp.DefaultInstance.SetEditorServiceAccountEmail("SERVICE-ACCOUNT-ID@YOUR-FIREBASE-APP.iam.gserviceaccount.com");
    FirebaseApp.DefaultInstance.SetEditorP12Password("notasecret");
  }
}

다음 단계

알려진 문제

  • 실험 단계인 .NET 4.6 프레임워크를 사용하는 경우, Unity 2017.2를 설치한 macOS에서 2017.2.0의 회귀 문제로 인해 해당 구성의 SslStream이 오작동하여 실시간 데이터베이스가 작동하지 않습니다. 이 회귀 문제는 2017.3.0에서 수정되었으므로 이 버전에서는 실시간 데이터베이스가 정상 작동합니다.