GameChat Docs
  • Overview
  • Getting Started
  • Basics
    • Game Chat (V2)
      • Game Chat(한국어)
        • Game Chat 사용 준비
        • Game Chat 시작
          • Game Chat 운영 및 관리
          • Unity SDK
        • OpenAPI
          • 채널 생성
          • 채널 수정
          • 채널 삭제
        • Game Chat 리소스 관리
        • Game Chat 릴리즈 노트
      • Game Chat(English)
        • Prerequisites for using Game Chat
        • Getting started with Game Chat
          • Game Chat operation and management
          • Unity SDK
        • OpenAPI
          • Channel creation API
          • Channel edit
          • Channel deletion API
        • Game Chat resource management
        • Game Chat release notes
      • Game Chat(日本語)
        • Game Chat を使用する前に
        • Game Chat を開始する
          • Game Chat の運用と管理
          • Unity SDK
        • OpenAPI
          • チャンネル作成API
          • チャネルの修正
          • チャンネル削除API
        • Game Chatのリソース管理
        • Game Chat のリリースノート
      • Game Chat(中文)
        • Game Chat使用前准备
        • 启动Game Chat
          • Game Chat运营和管理
          • Unity SDK
        • Open API
          • 频道创建API
          • 修改频道
          • 频道删除API
        • Game Chat资源管理
        • Game Chat版本注释
    • Game Chat (V3)
      • Game Chat(한국어)
        • V3 사용 시작
          • Unity SDK 설치
          • 초기화
          • 로그인
          • 채널
          • 메시지
          • 이벤트
          • 친구
          • 푸시
          • 가져오기&내보내기
          • 고정 메시지
          • 외부연동
          • 사용예제
          • Troubleshooting
      • Game Chat(English)
        • Start using V3
          • Install Unity SDK
          • Initialization
          • Login
          • Channel
          • messages
          • Events
          • Friendship
          • Push
          • Import and export
          • Pinned message
          • External integration
          • Usage examples
          • Troubleshooting
      • Game Chat(日本語)
        • V3の使用を開始
          • Unity SDK のインストール
          • 初期化
          • ログイン
          • チャンネル
          • メッセージ
          • イベント
          • 友達
          • プッシュ
          • インポート&エクスポート
          • 固定メッセージ
          • 外部連携
          • ユースケース
          • Troubleshooting
      • Game Chat(中文)
        • 开始使用V3
          • Unity SDK 安装
          • 初始化
          • 登录
          • 频道
          • 消息功能
          • 事件
          • 好友
          • 推送
          • 导入与导出
          • 固定消息
          • 外部集成
          • 使用示例
          • Troubleshooting
Powered by GitBook
On this page
  • システム要件
  • SDKのインストールと環境の構成
  • 認証
  • Game Chatインスタンスの初期化
  • Game Chatソケットサーバとの接続
  • Game Chatサーバとの接続解除
  • チャットユーザー情報のアップデート
  • チャンネルの購読と購読解除
  • メッセージの送信
  • イベントの登録と解除
  • 例外事項
  • Client API
  • チャンネルの購読
  • チャンネル
  • チャンネルの作成と削除
  • メッセージ
  • チャットユーザー
  • GameChatExtension (Emoji, HyperLink)
  1. Basics
  2. Game Chat (V2)
  3. Game Chat(日本語)
  4. Game Chat を開始する

Unity SDK

Game Chat Unity SDKの使い方について説明します。

システム要件

Game Chat Unity SDKを使用するためのシステム要件は、以下のとおりです。

  • 最小スペック: 2018.4.0以上 (下位バージョンの Unityへの対応が必要な場合、cs@nbase.io までご連絡ください。)

  • 2019.4.X / 2020.3.X / 2021.1.Xバージョンの Unityエディタのユーザーは、2019.4.29f1以上 / 2020.3.15f2以上 / 2021.1.16f1以上のバージョンを使用します(AABバージョンビルド時の Unityエディタのバグが変更されたバージョン)

SDKのインストールと環境の構成

Game Chat Unity SDKをダウンロードして、Unityでプロジェクトを構成する方法は以下のとおりです。

  1. 設定 > SDKのダウンロードメニューを順にクリックし、Unity SDKのダウンロードをクリックします。

  2. Unityプログラムを実行し、プロジェクトを作成します。

  3. Unityで、Assets > Import Package > Custom Package...メニューを順にクリックします。

  4. ダッシュボードでダウンロードした「GameChatUnitySDK_xxxxxxxx」ファイルを読み込みます。

  5. パッケージにあるすべてのファイルを選択し、 [Import] ボタンをクリックします。

  6. プロジェクトを保存します。

認証

Game Chatインスタンスの初期化

Game Chatプロジェクト IDを用いて Game Chatインスタンスを初期化するには、以下のコードを使用します。

GameChat.initialize(PROJECT_ID);

// シンガポールリージョンを使用する場合
GameChat.setRegion("sg");
GameChat.initialize(PROJECT_ID);
ID
type
desc

PROJECT_ID

string

プロジェクト ID

Game Chatソケットサーバとの接続

Game Chatソケットサーバに接続する方法は以下のとおりです。

  1. チャットユーザー IDを用いてGame Chatソケットサーバにアクセスします。

    • Game Chatプロジェクトでチャットユーザー IDは固有の値です。

  2. APIを使用するためのトークンの値を取得します。

    • GameChat.connect以降に更新されたトークンの値を確認できます。

  3. トークンの値を取得した後、現在アクセス中のデバイスに対するチャットユーザー情報が更新されたのか確認します。

    • GameChat.connectのコールバックで渡される Memberは、更新されたデータです。

Game Chatソケットサーバに接続するには、以下のコードを使用します。

GameChat.connect(USER_ID,  (Member User, GameChatException Exception)=>
{

    if(Exception != null)
    {
        // エラー処理
        return;
    }
});
ID
type
desc

USER_ID

string

チャットユーザーの固有 ID

Game Chatサーバとの接続解除

Game Chatソケットサーバとの接続を解除するには、以下のコードを使用します。

GameChat.disconnect();

チャットユーザー情報のアップデート

connect成功後にチャットユーザー情報を保存してアップデートするには、以下のコードを使用します。

ハンドルネームの変更

GameChat.setNickname(USER_ID, NickName, (member, exception) =>
{
    if (exception != null)
    {
        // エラー処理
        return;
    }

});
ID
type
desc

USER_ID

string

チャットユーザーの固有 ID

NickName

string

チャットユーザーのハンドルネーム

Profile URLの変更

GameChat.setProfileUrl(USER_ID, ProfileUrl, (member, exception) =>
{
    if (exception != null)
    {
        // エラー処理
        return;
    }

});
ID
type
desc

USER_ID

string

チャットユーザーの固有 ID

ProfileUrl

string

チャットユーザーの ProfileURL

チャンネルの購読と購読解除

特定のチャンネルに対して購読または購読解除を行うには、以下のコードを使用します。

GameChat.subscribe(CHANNEL_ID);

GameChat.unsubscribe(CHANNEL_ID);
ID
type
desc

CHANNEL_ID

string

チャンネル ID

メッセージの送信

特定のチャンネルにメッセージを送信するには、以下のコードを使用します。

GameChat.sendMessage(CHANNEL_ID, MESSAGE);
ID
type
desc

CHANNEL_ID

string

チャンネル ID

MESSAGE

string

送信メッセージテキスト

MESSAGEパラメータに@[ユーザー ID]空白[メッセージ内容]を入力時

@user_idメッセージ本文

上記のケースでユーザー IDがログインした履歴がある場合、メッセージの詳細情報のうち、mentions情報はユーザー IDです。

イベントの登録と解除

Game Chatソケットサーバから受信するイベントに対し、カスタムハンドラを登録または解除するには、以下のコードを使用します。

GameChat.dispatcher.(EVENT_NAME) += (CALLBACK_FUNCTION);
public delegate void onConnectedCallback(string data);
public onConnectedCallback onConnected;
//「connect」Eventに対する、コールバック

public delegate void onDisconnectedCallback(string reason);
public onDisconnectedCallback onDisconnected;
//「disconnect」Eventに対する、コールバック

public delegate void onMessageReceivedCallback(Message message);
public onMessageReceivedCallback onMessageReceived;
//「message」Eventに対する、コールバック

public delegate void onUserAddedCallback(UserInfo userinfo);
public onUserAddedCallback onUserAdded;
//「userAdded」Eventに対する、コールバック

public delegate void onUserRemovedCallback(Message message);
public onUserRemovedCallback onUserRemoved;
//「userRemoved」Eventに対する、コールバック

public delegate void onErrorReceivedCallback(string result, GameChatException exception);
public onErrorReceivedCallback onErrorReceived;
//「error」Eventに対する、コールバック

例外事項

Game Chat APIの使用中に発生する Exceptionに対する共通処理 Classは、以下のとおりです。

public class GameChatException
{
    // Detail Error Code

    // 不明なエラー
    public static readonly int CODE_UNKNOWN_ERROR           = 0;
    // 初期化に失敗
    public static readonly int CODE_NOT_INITALIZE           = 1;
    // パラメータが正しくない場合
    public static readonly int CODE_INVAILD_PARAM           = 2;
    // ソケットサーバから発生したエラー
    public static readonly int CODE_SOCKET_SERVER_ERROR     = 500;
    //ソケットから発生したエラー
    public static readonly int CODE_SOCKET_ERROR = -501;
    // ネットワークコネクションエラーおよびタイムアウトが発生した場合
    public static readonly int CODE_SERVER_NETWORK_ERROR    = 4002;
    // サーバから取得したデータをパースする際のエラー
    public static readonly int CODE_SERVER_PARSING_ERROR    = 4003;

    // HTTPエラーの場合、当該ステータスコードがレスポンスコードとして伝達されます。 (400, 403 ...)

    // Error Code
    public int code { get; set; }
    // Error Message
    public string message { get; set; }
}

Client API

チャンネルの購読

Subscription Data Class (per Unit)

public class Subscription
{
    public string id;
    public string channel_id;
    public string user_id;
    public string created_at;
}
ID
type
desc

id

string

固有 ID

channel_id

string

チャンネル ID

user_id

string

チャットユーザーの固有 ID

created_at

string

作成日時

チャンネル購読リストを取得する

特定のチャンネルの購読データをリスト形式で取得するには、以下のコードを使用します。

GameChat.getSubscriptions(CHANNEL_ID, OFFSET, LIMIT, (List<Subscription> Subscriptions, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    foreach(Subscription elem in Subscriptions)
    {
        //handling each subscription instance
    }
}));

チャンネル

Channel Data Class (per Unit)

public class Channel
{
    public string id;
    public string project_id;
    public string unique_id;
    public string name;
    public string user_id;
    public string created_at;
    public string updated_at;
}
ID
type
desc

id

string

チャンネル ID(固有)

project_id

string

プロジェクト ID

unique_id

string

開発会社で設定できるチャンネル ID(固有)

name

string

チャンネル名

user_id

string

(チャンネルを作成した)チャットユーザー ID

created_at

string

作成日時

updated_at

string

更新日

チャンネルリストを取得する

プロジェクトのチャンネルデータをリスト形式で取得するには、以下のコードを使用します。

GameChat.getChannels(OFFSET, LIMIT, (List<Channel> Channels, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    foreach(Channel elem in Channels)
    {
        //handling each channelInfo instance
    }
});
ID
type
desc

OFFSET

int

全体チャンネルリストから取得するチャンネルの開始位置(index)

LIMIT

int

取得するチャンネル数

チャンネルデータを取得する

チャンネル IDや固有 IDを用いてチャンネルデータを取得するには、以下のコードを使用します。

//CHANNEL_IDでのみ検索する場合、CHANNEL_UNIQUE_IDパラメータに nullを入れます。

//CHANNEL_IDと CHANNEL_UNIQUE_IDの値が同時に存在する場合、CHANNEL_UNIQUE_IDの値を優先的に検索します。

GameChat.getChannel(CHANNEL_ID, CHANNEL_UNIQUE_ID,  (Channel Channel, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    //handling channelInfo instance
});
GameChat.getChannel(CHANNEL_UNIQUE_ID, (Channel Channel, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    //handling channelInfo instance
});
ID
type
desc

CHANNEL_ID

string

チャンネル ID(自動作成)

CHANNEL_UNIQUE_ID

string

チャンネル(固有)ID(カスタマイズ可能)

チャンネルの作成と削除

メッセージ

(Received) Message Data Class (per Unit)

public class Message
{
    public class User
    {
        public string id;
        public string name;
        public string profile;
    }

    public string message_id;
    public string channel_id;
    public string message_type;
    public string content;

    public string[] mentions;
    public bool mentions_everyone;
    public User sender;
    public string created_at;
}
ID
type
desc

message_id

string

メッセージの固有 ID

channel_id

string

チャンネル ID

message_type

string

メッセージタイプ

content

string

メッセージの内容(JSON文字列)

mentions

string

メンション(タグ)

created_at

string

メッセージリストを取得する

特定のチャンネルに対するメッセージデータをリスト形式で取得するには、以下のコードを使用します。

GameChat.getMessages(CHANNEL_ID, OFFSET, LIMIT, SEARCH, QUERY, SORT, (List<Message> Messages, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    foreach(Message elem in Messages)
    {
        //handling each message instance
    }
});
ID
type
desc

CHANNEL_ID

string

チャンネル ID

OFFSET

string

全体メッセージリストから取得するメッセージの開始位置

LIMIT

string

取得するメッセージ数

SEARCH

string

メッセージ検索基準キー。 <例> content.text 空の文字列を伝達する場合、全体検索

QUERY

string

メッセージ検索の値。 完全一致のみ検索可能。 空の文字列を伝達する場合、全体検索

SORT

string

メッセージのソート順序(デフォルト: 降順 - 最新順) (オプション: 昇順)

メッセージの翻訳

(Received) Translation Data Class (per Unit)

public class Translation
{
    public string detectLang = "";
    public string lang = "";
    public bool translated = false;
    public string message = "";
}
ID
type
desc

detectLang

string

ソース言語コード

lang

string

ターゲット言語コード

translated

bool

翻訳の成否

message

string

結果メッセージの内容(JSON文字列)

参考

GameChat.translateMessage(CHANNEL_ID, SORCE_LANG, TARTGET_LANG, TEXT, (List<Translation> Translations, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    foreach(Translation elem in Translations)
    {
        //handling each Translation instance
    }
});

GameChat.translateMessage(SORCE_LANG, TARTGET_LANG, TEXT, (List<Translation> Translations, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }

    foreach(Translation elem in Translations)
    {
        //handling each Translation instance
    }
});
ID
type
desc

CHANNEL_ID

string

チャンネル ID

SORCE_LANG

string

TARTGET_LANG

string

TEXT

string

送信するテキスト

チャットユーザー

(Received) Member Data Class (per Unit)

public class Member
{
    public string id = "";
    public string project_id = "";
    public string nickname = "";
    public string profile_url = "";
    public string country = "";
    public string remoteip = "";
    public string adid = "";
    public string device = "";
    public string network = "";
    public string version = "";
    public string model = "";
    public string logined_at = "";
    public string created_at = "";
    public string updated_at = "";
}
ID
type
desc

id

string

チャットユーザーの固有 ID

project_id

string

ログインした Game Chatプロジェクト ID

nickname

string

チャットユーザーのハンドルネーム

profile_url

string

プロフィール画像 URL

country

string

アクセスした国

remoteip

string

アクセス IPアドレス

adid

string

広告識別子

device

string

アクセスデバイスの環境

network

string

アクセスネットワークのタイプ (セルラー、Wi-Fi)

version

string

アクセスアプリのバージョン

model

string

アクセスデバイスのモデル

logined_at

string

ログインした日

created_at

string

チャットユーザーの作成日時

updated_at

string

チャットユーザー情報の更新日

チャットユーザー情報のアップデート

チャットサーバのユーザー情報をアップデートできます。

// チャットユーザーのハンドルネームをアップデート
// ハンドルネームには、whitespace(spaces、tabs、line breaks)を除く2~128文字で入力できます。
GameChat.setName(MEMBER_ID, NAME, (Member member, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }
    //handling updated Member instance
});

//チャットユーザーのプロフィール画像 URLをアップデート
GameChat.setProfileUrl(MEMBER_ID, PROFILE_URL, (Member member, GameChatException Exception) => {

    if(Exception != null)
    {
        // エラー処理
        return;
    }
    //handling updated Member instance
});
ID
type
desc

MEMBER_ID

string

チャットユーザーの固有 ID

NAME

string

チャットユーザーのハンドルネームまたは名前

PROFILE

string

プロフィール画像 URL

GameChatExtension (Emoji, HyperLink)

受信メッセージに含まれた絵文字とハイパーリンクテキストを扱いやすいようにサポートするヘルパークラスです。

  • TMP_GameChatTextUGUIは、Unityビルトインアセットの TextMeshProを拡張したクラスであるため、先に Package Managerを用いて TextMeshProをインストールする必要があります。

  • TextMeshProアセットの場合、Unity 2018.2以上のバージョンからビルトインアセットとして含まれます。

  • 絵文字スプライトシートの場合、絵文字バージョン13(Android)を基準に基本的に表示され、スプライトシートを変更してカスタマイズできます。

namespace GameChatUnity.Extension
{
    public class TMP_GameChatTextUGUI : TextMeshProUGUI
    {
        public bool isHyperLinked { get; set; }    // リンク形式アドレスをハイパーリンク処理するかどうか(HTMLタグを追加する)
        public string LinkTextColor { get; set; }  // hyperlink text color
    }
}

<例>

using GameChatUnity.Extension;

TMP_GameChatTextUGUI message = msgObject.GetComponent<TMP_GameChatTextUGUI>();

//ハイパーリンクの認識と処理のために、テキストは setMessageを通じて入れます。
message.setMessage(MESSAGE_CONTENT);
message.color = Color.green;
message.isHyperLinked = true;

...

msgObject = Instantiate(msgObject) as GameObject;

...

// ハイパーリンクに対するクリックイベントリスナーは、直接実装してください。

//Handling with TMP_LinkInfo
TMP_LinkInfo linkInfoArr = message.textInfo.linkInfo[LINK_INDEX];

...
PreviousGame Chat の運用と管理NextOpenAPI

Last updated 8 months ago

プロジェクト内で新しいチャンネルを作成または削除するには、Open APIを活用します。 セキュリティ問題のため、チャンネル作成やアップデートなどは、Open APIを活用して Server to Serverで直接行うことをお勧めします。 詳細は、をご参照ください。

自動翻訳機能が有効化されている場合、任意のテキストを指定した言語に翻訳できます。 自動翻訳機能は、サービスと連携すると使用できます。

ソース言語コードとターゲット言語コードについての説明は、をご参照ください。

(送信する)テキストの言語名(auto: 自動検出) を参考

(翻訳受信する)テキストの言語コード (","で区切って、複数入力可能。 <例> "en, fr, th") を参考

Game Chat APIガイド
Papago Translation
Papago Text Translation APIガイド
API Guide
Papago Text Translation APIガイド