StrixConnectUI¶
既製品のプレハブを使用して、Strixの機能を試したり、素早くプロトタイプを制作したりすることができます。
StrixConnectUI
プレハブを使用すると、マスターサーバーに接続してルームに参加する (ルームがなければ新規ルームを作成する) という処理を、コードを一切記述せずに素早く実装できます。
プレハブの設定¶
最初に、プレハブをシーンに追加する必要があります。(これはAssets > Strix > GUI > Scriptsフォルダーにあります。)
このプレハブにはStrixConnectPanel
という子オブジェクトがあり、そこにSTRIXのスクリプトコンポーネントが2個アタッチされています。StrixConnectGUI
とStrixEnterRoom
です。まずStrixConnectGUI
に注目してください。
ゲームを実行する前に、Host
、Port
、Application Id
の各プロパティをサーバーに合わせて指定しておく必要があります。
Host
はマスターサーバーのアドレスです。Strix Cloudでは「マスターホスト名」と呼ばれています。Port
は、Strix Cloudを使う場合は常に9122なのでデフォルト値を使用します。Application Id
は、アプリケーションを識別するために使用し、Strix Cloudが割り当てます。
サーバーのマスターホスト名とアプリケーションIDは、Strix Cloudのアプリケーションダッシュボードにあります。
インスペクターでこのコンポーネントを使いログレベルを調整することもできます。ログレベルの詳細については、ログレベルを参照してください。
注釈
シーンにEventSystem
があることを確認してください。そうしないとUIボタンが機能しません。EventSystemを追加するには、メニューの [ゲームオブジェクト] > [UI] > [イベントシステム (スクリプト)] を使用するか、シーンのヒエラルキーの何もない場所でマウスの右ボタンをクリックして、コンテキストメニューから [UI] > [イベントシステム (スクリプト)] を選択します。
プレハブの使用¶
これで、エディターの再生モードで (あるいはビルドしたパッケージで) シーンを実行できるようになりました。
このシーンがロードされてプレハブがインスタンス化されると、プレイヤー名を入力するフィールドと [Connect] ボタンのあるUIが表示されます。入力した名前がルームメンバーの名前になります。名前を空のままにすると、ルームメンバーの名前は空になります。
[Connect] ボタンを押すと、スクリプトがマスターサーバーへ接続を試みます。成功した場合は、既存のランダムなルームに参加するか、適切なルームが見つからなければ新しいルームを作成します。その後、このUIは消えます。
この時点でSTRIXのルーム内に入っています。ご自分で (またはお仲間が) 同じサーバーで同じプログラムを実行すると、その人たちも同じルームに入るはずです。
注釈
StrixConnectUI
プレハブを空のシーンに追加して実行した場合には、UIが消えた後でも面白いことは何も起きません。マルチプレイヤーのゲームを体験するためには、他にもGameObject
を、特に複製されるものを追加する必要があります。
その方法を知るには、このガイドの他のページをお読みください。
イベント¶
このプレハブに含まれるSTRIXのスクリプトはいくつかのイベントを提供しており、それを使ってご自分のロジックを追加できます。全てのイベントはUnityEvents
を使用して実装されているため、ご自分のスクリプトで作成したハンドラーを簡単に追加できます。
以下のイベントを利用できます。
スクリプトコンポーネント |
イベント |
説明 |
---|---|---|
StrixConnectGUI |
OnConnect |
マスターサーバーに接続したときにコールバックされます。 |
StrixEnterRoom |
OnRoomEntered |
ルームへの参加に (状況によってルームを作成した後で) 成功したときにコールバックされます。 |
StrixEnterRoom |
OnRoomEnterFailed |
ルームへの参加に失敗したときにコールバックされます。 |
例えば、ルームに参加したり作成したりした後に何らかのコードを実行したい場合は、ハンドラーを記述し、インスペクターでOnRoomEntered
イベントに追加できます。
ただし、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"
のような文字列を設定できます。
このURL形式文字列の構文についてはURLを用いた接続を参照してください。WebGLサポートに関してはHTML5とWebGLを利用したクライアントの作成方法もご覧ください。)