目的
Unityでオンラインマルチプレイを実装するために、StrixCloudを使用しての開発を開始した。前回、RPC機能を行ったので、今回はStrixプレハブを使用せずに、自作コードでのルーム入室(オンライン接続)を行う。
ルーム入室機能作成
ルーム入室機能概要
UI等は用意せずに、ゲーム開始と同時にサーバーへの接続が行われ、ルームへの入室が行われるものとする。
プロジェクト作成
- 前回のプロジェクトを開く
- オンライン接続機能用のGameObject [ConnectSystem]を作成
- C#スクリプト[ConnectSystem]を作成してアタッチ
- シーン上の[StrixConnectUI]を削除
ConnectController
サーバーへの接続とルームの入室・作成処理を作成する。
Strixプレハブの[StrixConnectGUI.cs]と[StrixEnterRoom.cs]足して削った。
ConnectController.cs
using SoftGear.Strix.Unity.Runtime; using UnityEngine; using SoftGear.Strix.Unity.Runtime.Event; public class ConnectController : MonoBehaviour { // サーバー情報 public string host = "127.0.0.1"; public int port = 9122; public string applicationId = "00000000-0000-0000-0000-000000000000"; // ルーム参加可能人数 public int capacity = 4; // ルーム名 public string roomName = "New Room"; void Start() { Connect(); } // マスターサーバー接続 public void Connect() { StrixNetwork.instance.applicationId = applicationId; StrixNetwork.instance.playerName = "player"; StrixNetwork.instance.ConnectMasterServer(host, port, OnConnectCallback, OnConnectFailedCallback); } // マスターサーバー接続成功コールバック private void OnConnectCallback(StrixNetworkConnectEventArgs args){ EnterRoom();} // マスターサーバー接続失敗コールバック private void OnConnectFailedCallback(StrixNetworkConnectFailedEventArgs args){} // ルーム入室 public void EnterRoom() { // ランダムなルームに入室 入室出来るルームが無い場合にはルーム作成 StrixNetwork.instance.JoinRandomRoom(StrixNetwork.instance.playerName, args => {}, args => {CreateRoom();}); } // ルーム作成 private void CreateRoom() { // ルームの参加可能人数と名前を設定 RoomProperties roomProperties = new RoomProperties { capacity = capacity, name = roomName }; // ルームのメンバーとなるプレイヤー名の設定 RoomMemberProperties memberProperties = new RoomMemberProperties { name = StrixNetwork.instance.playerName }; // ルームを作成して入室 StrixNetwork.instance.CreateRoom(roomProperties, memberProperties, args => {}, args => {}); } }
動作チェック
Strixプレハブ使用時と同様にオンラインのマルチプレイが行える。
コメント