Chatデモ
このChatデモでは、Chat APIの簡単なインテグレーションを示します。
このドキュメントでは、PUNパッケージ内のChatデモをもとにChat APIがどのように動作するのかを簡単に説明します。
Chat APIには2つの主要な対象があります。IChatClientListenerInterface
とChatClient
クラスです。
これらは、ともにChatGui
という名前の単独のコンポーネントスクリプトで処理されます。
ChatGui
ChatGui
は、このデモ用の専用コンポーネントで、ゲームへの修正をくわえるための起点として役立ちます。
Chat APIはIChatClientListener
インターフェースを実装する単独のコンポーネントの周辺に集中化され、チャットからのすべてのコールを取得する点、また ChatClient
インスタンスを管理して、チャットシステムを実行しアクティブに保つ点に留意してください。
IChatClientListener
IChatClientListener
インターフェースによって、接続状態、ユーザーステータスの変更、購入プランおよび受信メッセージなどのすべてのコールバックにアクセスできます。
非常に分かりやすいため、問題なく理解できることと思います。
以下は、このIChatClientListener
のコンポーネントでの実装例です。
C#
using UnityEngine;
using System.Collections;
using ExitGames.Client.Photon.Chat;
public class ChatTest : MonoBehaviour, IChatClientListener
{
#region IChatClientListener implementation
public void DebugReturn (ExitGames.Client.Photon.DebugLevel level, string message)
{
throw new System.NotImplementedException ();
}
public void OnDisconnected ()
{
throw new System.NotImplementedException ();
}
public void OnConnected ()
{
throw new System.NotImplementedException ();
}
public void OnChatStateChange (ChatState state)
{
throw new System.NotImplementedException ();
}
public void OnGetMessages (string channelName, string[] senders, object[] messages)
{
throw new System.NotImplementedException ();
}
public void OnPrivateMessage (string sender, object message, string channelName)
{
throw new System.NotImplementedException ();
}
public void OnSubscribed (string[] channels, bool[] results)
{
throw new System.NotImplementedException ();
}
public void OnUnsubscribed (string[] channels)
{
throw new System.NotImplementedException ();
}
public void OnStatusUpdate (string user, int status, bool gotMessage, object message)
{
throw new System.NotImplementedException ();
}
#endregion
}
ChatClient
コンポーネントはまず、ChatClient
をインスタンス化し、そのインスタンスを参照しつづける必要があります。
さらに、接続を維持して受信メッセージを処理するため、更新のたびにコンポーネントはChatClientInstance.Service()
を呼ぶ必要があります。
この処理によって、プロジェクト内でのチャットの挙動について、パフォーマンスを適切に管理できるようになります。
ChatClient
インスタンスは、接続、切断、メッセージの送信、チャネルとの連携、チャネルからの離脱、フレンドの追加、ユーザーステータスの変更などをおこなうための中心的なエントリーポイントです。
PUNとのインテグレーション
PUNとChat SDKは互いに補間しあうため、プロジェクトでは両方を使用することを推奨しています。両方を使用することには全く問題がなく、同じルームにいないプレイヤー同士が通信するのに役立ちます。
これは、Chat SDKがPUNゲームと連携できることを示す良い例です。
必須事項と禁止事項
このSDKによって、ゲーム内に簡単にチャットサービスを作成できます。
ただし、以下に考慮すべき事項を列記します。
必須事項
DebugReturn()
APIコールバックを適切に実装し、チャットシステムからのすべての情報やログを取得できる点を確認してください。SetOnlineStatus()
オブジェクトMessage
を活用し、プレイヤーのフレンド全員に情報を共有してください。
これは非常に強力なため、パブリックチャネルを開設したり、グローバルな通信システムにキャッチアップするよりも効率的です。ChatClient.MessageLimit
を使用する際には、チャットが使用するメモリを的確に制限するよう留意してください。- Chat SDKは文字列の送信にしか使用できないわけではありません。Chat SDKによって、創造性が飛躍的に高まり、複雑なオブジェクトを強力な通信で送信できます。また、ユーザー間だけでなくアプリケーションエンジン間の通信も可能です。
禁止事項
Update()
で、必要なたびにChatclient.Service()
を実行するのを忘れないようにしてください。コンポーネントがこの実行を担当する必要があります。- 互換性のあるプラットフォームでは、PhotonServerSettings内で「バックグラウンドで実行」を有効化している点を確認してください。
有効化していない場合には、アプリケーションがバックグラウンドに移行した場合に接続が中断します。