Firebase 实时数据库使用 NoSQL 云端数据库存储和同步数据。数据会实时同步到所有客户端,而且即便您的应用处于离线状态,数据也仍然可供使用。
准备工作
在使用实时数据库之前,您需要:
注册 Unity 项目并将其配置为使用 Firebase。
如果您的 Unity 项目已在使用 Firebase,那么您就已注册该 Unity 项目并已将其配置为使用 Firebase。
如果您没有 Unity 项目,则可以下载示例应用。
将 Firebase Unity SDK(具体而言是
FirebaseDatabase.unitypackage
)添加到您的 Unity 项目中。
请注意,将 Firebase 添加到 Unity 项目需要在 Firebase 控制台中和打开的 Unity 项目中执行若干任务(例如,从控制台下载 Firebase 配置文件,然后将配置文件移到 Unity 项目中)。
设置公共访问权限
实时数据库提供了声明性规则语言,可用于定义应该如何设计数据结构、如何将数据编入索引以及何时可以读取和写入数据。默认情况下,对数据库的读写权限是有限制的,只有通过身份验证的用户才能读写数据。如需在未设置身份验证的情况下开始使用数据库,您可以将您的规则配置为允许公开访问。 这会使得您的数据库向所有人开放,包括不使用您的应用的用户,因此在设置身份验证时,请务必重新限制对您的数据库的访问权限。
为 Unity 编辑器配置 SDK。
在 Unity 编辑器中测试场景时,可以使用实时数据库。 您必须使用正确的数据库网址配置 SDK。使用您的数据库的网址调用 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/"); } }
如果您已选择对规则开放公共访问权限,并设置了数据库网址,则可转至有关保存和检索数据的部分。
可选。针对受限访问权限的编辑器设置。
如果您选择使用不允许公共访问的规则,则需要将 SDK 配置为使用服务帐号在 Unity 编辑器中运行。这也使得您可以在测试期间模拟最终用户。为实现此目的,首先要通过以下网址创建一个新的 p12 文件:
https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR-FIREBASE-APP
记录为服务帐号生成的电子邮件地址和密码。
将 p12 文件放在 Unity 项目中的“Editor Default Resources”下。 接下来,添加以下代码以对服务帐号的使用进行初始化。
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"); } }
后续步骤
- 了解如何为实时数据库设计数据结构。
- 将数据扩展到多个数据库实例。
- 保存数据。
- 检索数据。
- 在 Firebase 控制台中查看您的数据库。
已知问题
- 在使用实验性 .NET 4.6 框架时,Firebase 实时数据库无法在 macOS 上与 Unity 2017.2 配合使用,原因是 2017.2.0 版本中出现了一个回归问题,这会在该配置中破坏 SslStream。2017.3.0 版本修复了该回归问题,因此 Firebase 实时数据库可与该版本配合使用。