Integrating Momento with your Unity app
Unityは、今日、市場で最も人気のあるゲームエンジンの1つであるリアルタイム開発プラットフォームです。Unityゲームエンジンは、モバイル、デスクトップ、没入型プラットフォーム(拡張現実や仮想現実など)を含むさまざまなプラットフォームで、2Dおよび3Dのインタラクティブアプリを作成するために何千人もの開発者によって使用されています。
このチュートリアルでは、Momento .NET SDKを使用して、シンプルなUnityチャットアプリケーションを作成します。具体的には、Momento Topicsを使用して、チャットメッセージのパブリッシュとサブスクライブを行います。
Momento Topicsは、サーバーレスでリアルタイムコミュニケーションを実現するアプローチで、クライアントがトピックと呼ばれる専用チャンネルをサブスクライブしてパブリッシュすることができます。そのため、Unityベースのリアルタイムチャットアプリケーションに最適です。さらに、サーバーレスアプローチであるため、独自のサーバーを作成したり設定したりする必要がありません。詳細はMomento Topics Documentation pageを参照してください。
前提条件
Unity
Unity 2022 LTS releaseをダウンロードしてください。このチュートリアルを書くにあたり、特にUnity 2022.3.9f1を使用しましたが、どのUnity 2022 LTSリリースでも動作するはずです。
Momento
Unityのダウンロードとインストールを待つ間、Momentoコンソールを使ってMomento側の設定を行うことができます。
- メールアドレスを入力するか、既存の Google または GitHub アカウントをリンクすることで、コンソールでアカウントを作成できます。
- コンソールにログインしたら、ページの右上にある
Create Cache
ボタンをクリックします: キャッシュ作成ボタン Unity-Topics-Cache
というキャッシュを作成します。キャッシュはクラウドプロバイダー、AWSまたはGCPのいずれかを選択し、任意のリージョンに作成できます。Create
ボタンを押すと、利用可能なキャッシュのリストに新しいUnity-Topics-Cache
キャッシュが表示されます。キャッシュを作成した地域もキャッシュのリストに表示されます。次のステップで Momento API Keyを生成するときに、同じ地域を選択する必要があります。 チャットキャッシュ- API Keyページに移動し、キャッシュの作成に使用したクラウドプロバイダーとリージョンを選択し、
Super User API Key
トークンタイプを選択し、Generate API Key
ボタンをクリックします。 API Key
をコピーして安全な場所に保存してください。後でUnityチャットアプリケーションを設定するために使用する必要があります。
Unityプロジェクトのセットアップ
プロジェクトの作成
前提条件をクリアしたら、Unityプロジェクトをセットアップする必要があります。そのためには、私たちのexample demo repositoryをクローンしてそこから始めるか、ゼロから自分で作成します。Unityに慣れていない場合や、後のステップで時間を節約したい場合は、exampleリポジトリをクローンすることをお勧めします。
サンプルのリポジトリにあるUnityプロジェクトを使用するには、以下の手順を実行します:
- https://github.com/momentohq/momento-unity-demo をクローンします。
- Unity Hub を開きます。
- 既存のUnityプロジェクトを "Open"をクリックして開きます: 新しいUnityプロジェクト
- クローンしたフォルダを選択します。
- Unity 2022.3.9f1以外のバージョンを使用している場合、Unityにプロジェクトのエディタバージョンを適切に変更させる必要があるかもしれません。
- 6.Unityプロジェクトがロードされたら、
Scenes/MomentTopicsDemo.unity
シーンファイルを開きます。
このチュートリアルの残りは、サンプルリポジトリを利用します。
UnityにMomento .NET SDKを追加する
プロジェクトを開けたら
- 最新のMomentoSdkUnityリリース.zipファイルをダウンロードします。例えば、v1.23.0 リリース の場合、MomentoSdkUnity-1.23.0.zip をダウンロードします。この.zipファイルには、UnityのHTTP/2互換性の制限のためにgRPC-Webを利用するMomento .NET SDKの特別なバージョンが含まれています。必要な DLL の依存関係も zip ファイルに含まれています。
- フォルダ
Assets/MomentoSdkUnity
内に解凍します。
MomentoトピックでUnityチャットアプリケーションを構築する
このステップまでくれば、Momento .NET SDKを介してMomentoトピックに接続するためのユーザーインターフェイスの構築とC#スクリプトの作成を開始する準備が整ったことになります。
このチュートリアルでは、クローンされたリポジトリにある既存のサンプルコードを利用し、以下の2つのセクションでUIとC#コードがどのようにセットアップされているかの概要を説明します。
ユーザーインターフェースの理解
私たちのサンプルプロジェクトでは、ユーザーインターフェイスはすでに2つの別々のUnity UI Canvas要素にビルドアウトされています。1つはユーザーに名前を選択させるためのもので、もう1つは実際のテキストチャットのためのものです。
以下に示すように、NameCanvasにはTextMeshPro入力フィールドと「Start」ボタンが含まれています。
ユーザーが名前を入力した後、Enterキーを押すか、"Start "ボタンをクリックすると、チャットアプリケーションが起動します。そうすると、C# スクリプトは NameCanvas を非表示にし、MessagingCanvas を表示します。
MessagingCanvas には Scroll View があり、チャットメッセージングウィンドウをスクロールできるようにします。適切な UI 要素の位置決め により、チャットメッセージエリアが上方向に成長し、最新のメッセージが常に下に表示されるようにすることができます。
MessagingCanvasには絵文字ボタンもあり、利用可能な絵文字を表示したり、チャットに絵文字を追加することができます:
絵文字の挿入を処理するには、ヘルパーC#スクリプト EmojiHelper.cs
を使用する。
MomentoトピックをサブスクライブするC#スクリプトを理解する
このサンプルコードでは、Momento .NET SDK Topic Example に基づいている Assets/TopicsTest.cs
でマジックが起こります。
最初に行う必要があるのは、Momento Prerequisite ステップで作成したAPI Keyを C# スクリプトに知らせることです。Momento .NET SDK Topic Exampleに従って、環境変数からAPI keyを取得するか、コードにハードコーディングします(コードにAPI Keyをハードコーディングすることは推奨されませんが、必要に応じてテスト目的で使用することはできます):
- Windowsで環境変数を設定するには、Windowsのスタートボタンをクリックし、"environment "を検索して、"Edit the system environment variables "をクリックします。次に "Environment Variables "をクリックし、
MOMENTO_API_KEY
環境変数が設定されていることを確認してください。新しく作成した環境変数を認識させるためにUnityを再起動する必要があるかもしれません。 - C# スクリプトでAPI key をハードコードするには、API KEYをコピーして
Assets/TopicsTest.cs
に貼り付け、ReadAuthToken()
関数のADD_YOUR_TOKEN_HERE
を置き換えます。
API Keyが適切に設定されたら、Unity Editorの "Play "ボタンをクリックしてテストすることができます!
まとめ
結論から言うと、MomentoとUnityを統合するには、最新のMomentoSdkUnityリリース.zipファイルをダウンロードし、UnityのAssets
フォルダ内の任意の場所に解凍するだけです。このチュートリアルでは、さらに一歩踏み込んで、Momentoトピックに接続し、簡単にメッセージを公開したり、メッセージを購読できるシンプルなチャットユーザーインターフェイスの設定方法を紹介します。