StrixConnectUI

既製品のプレハブを使用して、Strixの機能を試したり、素早くプロトタイプを制作したりすることができます。

StrixConnectUIプレハブを使用すると、マスターサーバーに接続してルームに参加する (ルームがなければ新規ルームを作成する) という処理を、コードを一切記述せずに素早く実装できます。

プレハブの設定

最初に、プレハブをシーンに追加する必要があります。(これはAssets > Strix > GUI > Scriptsフォルダーにあります。)

StrixConnectUI in Assets folder

このプレハブにはStrixConnectPanelという子オブジェクトがあり、そこにSTRIXのスクリプトコンポーネントが2個アタッチされています。StrixConnectGUIStrixEnterRoomです。まずStrixConnectGUIに注目してください。

StrixConnectPanel

ゲームを実行する前に、HostPortApplication Idの各プロパティをサーバーに合わせて指定しておく必要があります。

  • Hostはマスターサーバーのアドレスです。Strix Cloudでは「マスターホスト名」と呼ばれています。

  • Portは、Strix Cloudを使う場合は常に9122なのでデフォルト値を使用します。

  • Application Idは、アプリケーションを識別するために使用し、Strix Cloudが割り当てます。

サーバーのマスターホスト名とアプリケーションIDは、Strix Cloudのアプリケーションダッシュボードにあります。

インスペクターでこのコンポーネントを使いログレベルを調整することもできます。ログレベルの詳細については、ログレベルを参照してください。

StrixConnectGUI on Inspector

注釈

シーンにEventSystemがあることを確認してください。そうしないとUIボタンが機能しません。EventSystemを追加するには、メニューの [ゲームオブジェクト] > [UI] > [イベントシステム (スクリプト)] を使用するか、シーンのヒエラルキーの何もない場所でマウスの右ボタンをクリックして、コンテキストメニューから [UI] > [イベントシステム (スクリプト)] を選択します。

プレハブの使用

これで、エディターの再生モードで (あるいはビルドしたパッケージで) シーンを実行できるようになりました。

このシーンがロードされてプレハブがインスタンス化されると、プレイヤー名を入力するフィールドと [Connect] ボタンのあるUIが表示されます。入力した名前がルームメンバーの名前になります。名前を空のままにすると、ルームメンバーの名前は空になります。

[Connect] ボタンを押すと、スクリプトがマスターサーバーへ接続を試みます。成功した場合は、既存のランダムなルームに参加するか、適切なルームが見つからなければ新しいルームを作成します。その後、このUIは消えます。

この時点でSTRIXのルーム内に入っています。ご自分で (またはお仲間が) 同じサーバーで同じプログラムを実行すると、その人たちも同じルームに入るはずです。

注釈

StrixConnectUIプレハブを空のシーンに追加して実行した場合には、UIが消えた後でも面白いことは何も起きません。マルチプレイヤーのゲームを体験するためには、他にもGameObjectを、特に複製されるものを追加する必要があります。

その方法を知るには、このガイドの他のページをお読みください。

イベント

このプレハブに含まれるSTRIXのスクリプトはいくつかのイベントを提供しており、それを使ってご自分のロジックを追加できます。全てのイベントはUnityEventsを使用して実装されているため、ご自分のスクリプトで作成したハンドラーを簡単に追加できます。

以下のイベントを利用できます。

スクリプトコンポーネント

イベント

説明

StrixConnectGUI

OnConnect

マスターサーバーに接続したときにコールバックされます。

StrixEnterRoom

OnRoomEntered

ルームへの参加に (状況によってルームを作成した後で) 成功したときにコールバックされます。

StrixEnterRoom

OnRoomEnterFailed

ルームへの参加に失敗したときにコールバックされます。

例えば、ルームに参加したり作成したりした後に何らかのコードを実行したい場合は、ハンドラーを記述し、インスペクターでOnRoomEnteredイベントに追加できます。

OnRoomEntered and OnRoomEnterFailed

ただし、StrixConnectUIのイベントを処理するためのスクリプトを、StrixConnectUIプレハブ自身や、その子のGameObjectにアタッチすると、マスターサーバーへの接続が確立するとすぐに (全てのイベントハンドラーを実行し終えた後で) そのスクリプトも無効になります。例えばスクリプト内でコルーチンを開始するような場合には、そのスクリプトはシーン内の別のGameObjectにアタッチしておく必要があります。

StrixConnectGUI.OnConnectにはあらかじめStrixEnterRoom.EnterRoom()というハンドラーが設定されている点にも注意してください。マスターサーバーに接続するとすぐにルームに参加するのは、これが理由です。これを別のハンドラーで置き換えようとしているのでないかぎり (例えば、StrixRoomListプレハブが提供するものに入れ替えるのでないかぎり)、これはそのままにしておいてください。

WebGLプラットフォームでの使用

Strix Unity SDKバージョン1.5.0以降では、StrixConnectGUIスクリプトのHostプロパティにURL形式の文字列を指定できます。この機能は、このプレハブをWebGLアプリケーションで利用する上で役立ちます。

インスペクターでHostにURL形式の文字列を入力すると、Portフィールドはグレイアウトします。それは、ポート番号をHost文字列から取得するようになるためです。URL形式のホスト文字列でポート番号を省略すると、指定されたプロトコルのデフォルトが使用されます。

例えば、Strix CloudにありセキュアWebSocket接続を使うように設定したマスターサーバーへ接続する場合には、Host"wss://000000000000000000000000.game.strixcloud.net:9122"のような文字列を設定できます。

Example Inspector behavior for a URL-style host string

このURL形式文字列の構文についてはURLを用いた接続を参照してください。WebGLサポートに関してはHTML5とWebGLを利用したクライアントの作成方法もご覧ください。)