Unity上でTwitchのチャットコメントやフォロー通知などを受け取るためのライブラリ『UniTwitchClient』を自作したので、今回はこれを利用してUnityプロジェクト上でTwitchのチャットコメントを取得し、実際にConsoleに出力するまでの最短の導入手順について解説いたします。
1. Unityプロジェクトを作る
まず、導入するためのUnityプロジェクトを作ります。
エディターバージョンは、2021.3以降が望ましいです。
それ以前のバージョンでは、動作確認しておりません。
2. 依存ライブラリをUPMでインストールする
UniTwitchClientはUniRx、UniTask、Newtonsoft.Json-for-Unityに依存しているので、これらのインストールを行います。
UPMを使って以下の手順でインストールしていけばOKです。
UniRx( https://github.com/neuecc/UniRx )をインストール
- Package Managerウィンドウの左上の+を押す
- Add package from git URLで以下URLを入力
https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts
UniTask( https://github.com/Cysharp/UniTask )をインストール
UniRxと同様の手順で以下のURLを入力してインストール
https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask
Newtonsoft.Json-for-Unityをインストール
3. UniTwitchClientをUPMでインストール
UniRxやUniTaskと同様、Package Managerウィンドウ左上の+から、Add package from git URLで以下のURLを入力して、UniTwitchClientをインストールします。
https://github.com/mojopon/UniTwitchClient.git?path=Assets/UniTwitchClient
4. Twitchのアクセストークンを取得する。
Twitchのサービスを認証する際、アクセストークンが必要となります。
今回はTwitchTokenGenerator.comというサイトを使ってアクセストークンを生成します。
まずTwitch.tvで認証したいアカウントにログインしたのち、以下のサイトにアクセスしてください。
https://twitchtokengenerator.com/
サイトを開くとポップアップがでますが、赤枠の部分をクリックでOKです。
今回Twitchチャットのコメントを取得する上で必要となるスコープは、chat:read及びchat:editです。
Available Token Scopesの中のchat:read及びchat:editのAdd Scope欄をYesにします。
選択を終えたら右下の方にあるGenerate Token!という緑色のボタンを押します。
TwitchのOAuth認証サイトに移動して、許可を求められると思いますので「許可」ボタンを押してください。
するとTwitchTokenGenerator.comに再びリダイレクトされるので、Generated Tokens欄にあるACCESS TOKENをメモしておいてください。
後で使います。
赤で塗りつぶしてある箇所にアクセストークンが表示されているはずです。
5. UniTwitchClientを利用するスクリプトを作成して、チャットのコメントをConsoleに出力する。
UniTwitchClientを利用して、Unity上でコメントを取得するスクリプトを書きます。
Sampleというスクリプトを新規作成し、以下のコードを書きます。
using UnityEngine;
using UniTwitchClient.Chat;
using UniRx;
public class Sample : MonoBehaviour
{
string accessToken = "ここにアクセストークンを入力";
string userName = "Twitchユーザーネームを入力";
string channelName = "コメントを取得するチャンネル名を入力";
void Start()
{
var twitchChatClient = new TwitchChatClient(new TwitchIrcCredentials(accessToken, userName)).AddTo(this);
twitchChatClient.TwitchChatMessageAsObservable
.Subscribe(x => Debug.Log($"Name:{x.DisplayName}({x.UserNickname}), Message:{x.Message}"))
.AddTo(this);
twitchChatClient.Connect(channelName);
}
}
accessTokenの部分に先ほど(項目4)で取得したアクセストークンを入力。
userNameはTwitchのユーザーネームを入力。
channelNameはコメントを取得したいチャンネルのチャンネルネームを入力(例:https://www.twitch.tv/anomaloris のコメントを取得したい場合はanomalorisと入力)
準備ができたら、Sampleスクリプトをシーンに配置してシーン再生します。
ログイン時のシステムメッセージがConsoleに表示された後、対象チャンネルのコメントがあればConsoleに出力されます。
こんな感じです。Twitchチャット(左)に入力したコメントがConsole(右)に出力されました。
ログイン時のシステムメッセージを表示したくない場合はTwitchChatMessageAsObservableに以下のようなWhere句オペレーターをつけ足せばユーザーメッセージのみ表示されるようになります。
TwitchChatMessageクラスのCommandプロパティには受け取ったメッセージのIRC Commandが格納されていて、ユーザーがコメントした際のIRC CommandはPrivMsgとなります。
twitchChatClient.TwitchChatMessageAsObservable
.Where(x => x.Command == TwitchIrcCommand.PrivMsg)
.Subscribe(x => Debug.Log($"Name:{x.DisplayName}({x.UserNickname}), Message:{x.Message}"))
.AddTo(this);
まとめ
必要な手順をまとめると
- 必要パッケージ(UniRx, UniTask, Newtonsoft-Json-for-Unity,UniTwitchClient)をUPMでインストール
- 認証に使うアクセストークンを取得
- UniTwitchClientでコメント取得
といった感じです。
次回はUniTwitchClientを使ってチャンネルフォローされた際の通知を取得する方法の解説記事を書こうと思います。