目的
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プレハブ使用時と同様にオンラインのマルチプレイが行える。


コメント