StrixCloud入門 #4ルーム作成入室

Unity

目的

Unityでオンラインマルチプレイを実装するために、StrixCloudを使用しての開発を開始した。前回、RPC機能を行ったので、今回はStrixプレハブを使用せずに、自作コードでのルーム入室(オンライン接続)を行う。

ルーム入室機能作成

ルーム入室機能概要

UI等は用意せずに、ゲーム開始と同時にサーバーへの接続が行われ、ルームへの入室が行われるものとする。

プロジェクト作成

  1. 前回のプロジェクトを開く
  2. オンライン接続機能用のGameObject [ConnectSystem]を作成
  3. C#スクリプト[ConnectSystem]を作成してアタッチ
  4. シーン上の[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プレハブ使用時と同様にオンラインのマルチプレイが行える。

コメント

タイトルとURLをコピーしました