This document is about: PUN 1
SWITCH TO

PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

Chatデモ

このChatデモでは、Chat APIの簡単なインテグレーションを示します。
このドキュメントでは、PUNパッケージ内のChatデモをもとにChat APIがどのように動作するのかを簡単に説明します。

Chat Demo
フレンドのステータス更新を示すChatデモ

Chat APIには2つの主要な対象があります。IChatClientListenerInterfaceChatClientクラスです。
これらは、ともに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内で「バックグラウンドで実行」を有効化している点を確認してください。
    有効化していない場合には、アプリケーションがバックグラウンドに移行した場合に接続が中断します。
Back to top