このページには、Realm をインストールして Unity プロジェクトに統合する方法に関する情報が記載されています。
前提条件
Unity2020.3.12 f1 (LTS)
注意
Realm .NET SDKは Unity の他のバージョンと互換性がある可能性がありますが、 2020.3.12f1 (LTS)
は Realm チームがテストと開発に使用するバージョンです。 プロジェクトが Realm で動作するようにし、インストール手順が以下の手順と一致するようにするには、このバージョンを使用することをお勧めします。これは、Unity の UI がバージョン間で頻繁に変更されるためです。
インストール
Realm は、 Unityで使用するためのRealm .NET SDKをインストールするためのさまざまな方法を提供します。経験のあるUnity開発者は、 tarball を使用してRealm を手動でインストールするのが直感的な場合があります。ただし、Unity のパッケージマネージャー を通じてバージョン アップデートが通知されるため、 npm経由でRealm .NET SDKをインストールすることをお勧めします。
スコープ付きレジストリとしてnpmを追加する
Unityプロジェクト内でRealmをダウンロードして使用する前に、 npm をスコープ付きレジストリ として追加する必要があります。スコープ指定されたレジストリとしてnpm を追加すると、 Unity がnpmと通信するように構成され、 Realmなどのパッケージをインストールできるようになります。
WindowUnityメニューの上部にあるPackage Manager Window dropdown[]タブをクリックして、 Unityパッケージマネージャーを開きます。 から をクリックします。次に、右側のツールアイコンをクリックします。ドロップダウンからAdvanced Project Settings オプションを選択します。

スコープ指定されたレジストリのフォームに以下の詳細を入力し、保存ボタンをクリックします。
name = NPM URL = https://registry.npmjs.org Scope(s) = io.realm.unity

プロジェクトマニフェストへの Realm の追加
Unity がnpmからRealm .NET SDKをインストールできるようになりました。プロジェクトの マニフェストファイル にRealm を依存関係として追加する必要があります。Visual Studio または別のテキスト エディターで「パッケージ/manifest.json」ファイルを開きます。依存関係のオブジェクトの下部に、フィールド、"邦土.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は指定されたバージョンのRealm .NET SDK パッケージをnpmレジストリからダウンロードします。
Realm の依存関係を検証し、更新を確認する
Realmパッケージがnpmからダウンロードされたことを確認するには、 Unityメニューの上部にある [Window] タブをクリックしてUnityパッケージ マネージャーを開きます。 [ Windowドロップダウンから [ Package Manager ] をクリックします。 "Packages: In Project"タブに Realm が表示されます。

Realm パッケージのバージョン番号の横に緑色のチェック アイコンが表示されている場合は、パッケージが最新であることを意味します。 ただし、上向きの矢印のアイコンが表示される場合は、パッケージの新しいバージョンが使用可能です。 をクリックすると、最新リリースにアップグレードするオプションが表示されます。
最新の Realm .NET SDK リリースをダウンロード
Unity プロジェクト内で Realm の使用を開始する前に、Realm .NET SDK をダウンロードする必要があります。
Realm-dotnetリポジトリのリリース ページに移動し、プロジェクトで使用するリリースまで下にスクロールします。どのリリースを使用すればよいかわからない場合は、左の行の「最新リリース」というラベルの付いたものを使用できます。

リリースの [ Assets ] ドロップダウンまで下にスクロールし、[ io.realm.unity-[version-number].tgz<version-number> ] というラベルの付いたリンクをクリックして SDK をダウンロードします。

プロジェクト パッケージ マネージャーへの Tarball の追加
ダウンロードした Realm .NET SDK tarball をプロジェクト内に移動します。 これは、ファイルをプロジェクトの フォルダーにドラッグしてドロップすることで可能です。 tarball をプロジェクト フォルダーにコピーし、バージョン管理にコミットすると、プロジェクトに取り組む他の開発者は、Realm の依存関係を手動でダウンロードせずに、リポジトリを複製してビルドするだけで済むようになります。
次に、 Unityパッケージマネージャー を使用して tarball をプロジェクトにロードする必要があります。
パッケージ マネージャーを開くには、Unity メニューの上部にある [ Window ] タブをクリックします。 [ Window dropdown Package Managerをクリックします。 パッケージ マネージャー モデルが開いたら、モデルの左上にある+アイコンをクリックします。 Add package from tarball...オプションを選択します。

"io.realm.unity-bundled-<version-number>.tgz" を選択します ファイルを参照してプロジェクトのインポートを開始します。
Realm のインポート
C#スクリプトを作成するか、すでに作成したC#スクリプトを使用します。Visual Studio または別のテキストエディタでそのスクリプトを開き、次の行を追加してRealmパッケージをインポートします。
using Realms;
Unity プロジェクトでの Realm の使用
Realm .NET SDKを使用して開発する場合、 Unityや他のプラットフォームを使用するかに関係なく、 APIメソッドは同じです。ただし、 Unityには スクリプトの制限 がいくつかあるため、プロジェクトを開発する際には次の追加の考慮事項に注意する必要があります 。
マネージドコードストリング
Unity は管理コードのスクレイピングを実行し、未使用のコードをビルドから破棄してバイナリ サイズを縮小します。これにより、 BSON をC#クラスに逆直列化するときに問題が発生する可能性があります。iOSなどの IL2 C++を使用するプラットフォームでは、管理対象のコードの削除はデフォルトで有効になっています。BSONを使用する場合は、 [Preserv] 属性を使用して、シリアライザーによってのみデータが入力されるプロパティで管理コードが削除されるのを防ぎます。これらのプロパティはリフレクションを使用するため、 Unity はプロパティセッターが使用されていることを静的に推測することはできません。つまり、[Preserve] attribute
を適用しない限り、 Unity はそれらのプロパティを削除します。BSON逆直列化を実行する例については、 MongoDB のクエリ と 関数の呼び出し ドキュメントを参照してください。
アプリケーションの停止中に Realm を使用する
Realm .NET SDK には、 AppDomain.DomainUnload イベント または Application.clientイベント内でアクセスできません。つまり、プレイヤーアプリケーションの終了中はRealmにデータを書き込むことはできません。アプリが終了する前にデータを保存する必要がある場合は、代わりにApplication.wantsToQuitイベントの使用を検討してください。
注意
Windows で Unity を使用して開発する際の既知の問題
Windows で Device Sync を使用している場合、プロジェクトの複数のインスタンスを実行すると、複数のプロセスが同じ同期された Realm にアクセスしようとするため、プロジェクトがクラッシュする可能性があります。 ローカル Realm を使用している場合は、クラッシュすることなくプロジェクトの複数のインスタンスを実行できます。
その他の例
Realm Community は、Realm .NET SDK の使用方法を示す多くのプロジェクトを作成しています。 Unity とRealm .NET SDKの使用方法を示す以下の例を確認してください。
注意
MongoDB ドキュメント チームは、これらの例を直接管理することはありません。