Unity 快速入门 - .NET SDK
此页面包含有关如何安装 Realm 并将其集成到 Unity 项目中的信息。
先决条件
Unity2020.3.12 f1 (LTS)
注意
Realm .NET SDK 可能与其他版本的 Unity 兼容,但 2020.3.12f1 (LTS)
是 Realm 团队用于测试和开发的版本。我们建议使用此版本,以确保您的项目可与 Realm 配合使用,并且安装步骤与以下步骤匹配,因为 Unity 的用户界面经常在版本之间发生变化。
安装
Realm提供了多种方法来安装Realm .NET SDK以与Unity一起使用。 经验丰富的Unity开发者可能会发现使用 tarball 手动安装Realm非常直观。 但是,我们建议通过npm安装 Realm .NET SDK ,因为它会 通过 Unity 的包管理器提供版本更新通知 。
将 NPM 添加为限定范围的注册表
在下载并在 Unity 项目中使用 Realm 之前,必须将 NPM 添加为限定范围的注册表。将 NPM 添加为限定范围的注册表可将 Unity 配置为与 NPM 通信,从而允许您安装软件包,例如 Realm。
打开 Unity包管理器 Window单击Unity菜单顶部的 标签页。单击Package Manager中的Window dropdown 。 然后,单击右上角的齿轮图标。 从下拉列表中选择Advanced Project Settings选项。
使用以下详细信息填写限定范围的注册表单,然后单击“保存”按钮。
name = NPM URL = https://registry.npmjs.org Scope(s) = io.realm.unity
将 Realm 添加到项目清单
现在 Unity 可以从 NPM 安装 Realm .NET SDK 了,您需要将 Realm 作为依赖项添加到项目的清单文件中。在 Visual Studio 或其他文本编辑器中打开“Packages/manifest.json”文件。在依赖对象的底部,添加字段“io.realm.unity”及其值,即要用引号括起来的 Realm .NET 版本号。
"io.realm.unity": "<version-number>"
请记住将上面的 <version-number>
替换为实际版本号。您可以在 realm-dotnet GitHub 存储库 中找到最新版本 。您的完整清单文件应如下所示:
{ "dependencies": { ... "io.realm.unity": "10.21.0" }, "scopedRegistries": [ { "name": "NPM", "url": "https://registry.npmjs.org/", "scopes": [ "io.realm.unity" ] } ] }
保存此文件时,Unity 会从 NPM 注册表下载指定版本的 Realm .NET SDK 包。
下载最新版 Realm .NET SDK
在Unity项目中开始使用Realm之前,您必须下载Realm .NET SDK。
导航到 realm-dotnet存储库版本 页面,然后向下滚动到要在项目中使用的发布。如果不确定使用哪个发布,可以使用左行标有“最新版本”的版本。
向下滚动到版本的 “资产” 下拉列表,然后单击标有 “io.realm.unity-<version-number> .tgz” 的链接以下载 SDK。
将 Tarball 添加至您的项目包管理器
将下载的Realm .NET SDK tarball 移至项目中。 为此,您可以将文件拖放到项目的文件夹中。 将 tarball 复制到项目文件夹并将其提交给版本控制,可确保处理该项目的其他开发者只需克隆存储库并进行构建,而无需手动下载Realm依赖项。
接下来,您必须使用 Unity包管理器 将 tarball 加载到项目中 。
要打开包管理器,请单击Unity菜单顶部的Window标签页。 单击Package Manager中的Window dropdown 。 包管理器模型打开后,单击模型左上角的+图标。 选择Add package from tarball...选项。
选择“域.unity-bundled-<version-number>.tgz” 文件以开始导入项目。
导入 Realm
创建 C# 脚本或使用已创建的 C# 脚本。在 Visual Studio 或其他文本编辑器中打开该脚本,然后添加以下行以导入您的 Realm 包:
using Realms;
在 Unity 项目中使用 Realm
使用Realm .NET SDK进行开发时,无论您使用 Unity 还是其他平台,API 方法都是相同的。 但是,由于 Unity 有一些 脚本限制 ,在开发项目时还应记住以下额外注意事项:
托管代码剥离
Unity执行 托管代码剥离 ,丢弃构建中任何未使用的代码以减小二进制大小。在将BSON反序列化为C#类时,这可能会导致问题。 对于使用 IL2C++ 的平台 ,例如iOS ,默认启用托管代码剥离。使用BSON时,请使用[Preserve] 属性 以防止在仅由序列化器填充的类型属性上剥离托管代码。由于这些属性使用 反射 , Unity无法静态推断使用了属性setter。这意味着除非您应用[Preserve] attribute
,否则Unity将删除这些属性。 有关何时可以执行BSON反序列化的示例,请查看查询MongoDB和调用函数文档。
在应用程序退出时使用 Realm
在 AppDomain.DomainUnload 事件或 Application.quitting 事件中无法访问 Realm .NET SDK。这意味着当玩家应用程序退出时,您无法向 Realm 写入数据。如果您需要在应用程序退出前存储一些数据,请考虑使用 Application.wantsToQuit 事件。
注意
使用 Unity 进行开发时的 Windows 上的已知问题
在 Windows 上,如果使用的是 Device Sync,则在运行项目的多个实例时,项目可能会崩溃,因为多个进程会尝试访问同一已同步 Realm。如果使用的是本地 Realm,则可运行项目的多个实例而不会崩溃。
其他示例
Realm 社区已创建很多项目来演示 Realm .NET SDK 的用法。请查看以下示例,它们演示了如何将 Realm .NET SDK 与 Unity 一起使用!
注意
MongoDB 文档团队不直接维护这些示例。