メインコンテンツまでスキップ

すべてをまとめる - ゲームクライアント統合 - (Unity モジュール)

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

UI をカスタムマッチメイキングに接続する

このセクションでは、カスタムマッチメイキングメニューと、以前に作成したラッパーを接続して、ゲームクライアントをサンプルマッチメイキングバックエンドサービスに接続する方法を学びます。

  1. CustomMatchmakingMenu_Starter クラスを開き、ラッパー変数を宣言します。

    private CustomMatchmakingWrapper_Starter customMatchmakingWrapper;
  2. 以下のコードで StartMatchmaking() 関数を置き換えます。このコードは、サンプルマッチメイキングバックエンドサービスへの WebSocket 接続を開いてマッチメイキングを開始するラッパー関数を呼び出します。

    private void StartMatchmaking() 
    {
    widgetSwitcher.LoadingMessage = CustomMatchmakingModels.RequestMatchmakingMessage;
    widgetSwitcher.EnableCancelButton(false);
    widgetSwitcher.SetWidgetState(WidgetState.Loading);

    customMatchmakingWrapper.StartMatchmaking();
    }
  3. 次に、以下のコードで CancelMatchmaking() 関数を置き換えます。このコードは、サンプルマッチメイキングバックエンドサービスからの WebSocket 接続を閉じてマッチメイキングをキャンセルするラッパー関数を呼び出します。

    private void CancelMatchmaking() 
    {
    widgetSwitcher.LoadingMessage = CustomMatchmakingModels.CancelMatchmakingMessage;
    widgetSwitcher.EnableCancelButton(false);
    widgetSwitcher.SetWidgetState(WidgetState.Loading);

    customMatchmakingWrapper.CancelMatchmaking(isIntentional: true);
    }
  4. 次に、マッチメイキングが開始されたときに処理する新しいコールバック関数を作成します。この関数は、メニューをローディング状態に切り替え、マッチ検索メッセージを表示します。

    private void OnMatchmakingStarted() 
    {
    widgetSwitcher.LoadingMessage = CustomMatchmakingModels.FindingMatchMessage;
    widgetSwitcher.EnableCancelButton(true);
    widgetSwitcher.SetWidgetState(WidgetState.Loading);
    }
  5. 次に、マッチメイキングが停止したときに処理する別のコールバック関数を作成します。マッチメイキングが正常に停止した場合、この関数はメニューを通常状態に切り替えます。それ以外の場合は、エラーメッセージを表示するようにメニューを切り替えます。

    private void OnMatchmakingStopped(WebSocketCloseCode closeCode, string closeMessage)
    {
    if (closeCode == WebSocketCloseCode.Normal)
    {
    widgetSwitcher.SetWidgetState(WidgetState.Not_Empty);
    }
    else
    {
    OnMatchmakingError(closeMessage);
    }
    }
  6. 次に、マッチメイキングペイロードを受信したときに処理する別のコールバック関数を作成します。この関数は、メニューをローディング状態に切り替え、ペイロードメッセージ(例: マッチ発見メッセージやサーバー発見メッセージ)を表示します。

    private void OnMatchmakingPayload(CustomMatchmakingModels.MatchmakerPayload payload)
    {
    widgetSwitcher.LoadingMessage = payload.message;
    widgetSwitcher.SetWidgetState(WidgetState.Loading);
    }
  7. 次に、マッチメイキングエラーが発生したときに処理する別のコールバック関数を作成します。この関数は、メニューをエラー状態に切り替え、マッチメーカーから受信したエラーメッセージを表示します。

    private void OnMatchmakingError(string errorMessage) 
    {
    widgetSwitcher.ErrorMessage = errorMessage;
    widgetSwitcher.SetWidgetState(WidgetState.Error);
    }
  8. カスタムマッチメイキングメニューが表示されたら、ラッパー変数を初期化し、先ほど作成した関数を対応するボタンとイベントにバインドします。これを行うには、以下のコードで OnEnable() 関数を置き換えます。

    private void OnEnable()
    {
    customMatchmakingWrapper = TutorialModuleManager.Instance.GetModuleClass<CustomMatchmakingWrapper_Starter>();

    startMatchmakingButton.onClick.AddListener(StartMatchmaking);
    backButton.onClick.AddListener(MenuManager.Instance.OnBackPressed);

    widgetSwitcher.OnRetryButtonClicked += StartMatchmaking;
    widgetSwitcher.OnCancelButtonClicked += CancelMatchmaking;
    widgetSwitcher.OnStateChanged += OnSwitcherStateChanged;
    widgetSwitcher.SetWidgetState(WidgetState.Not_Empty);

    if (customMatchmakingWrapper)
    {
    customMatchmakingWrapper.OnMatchmakingStarted += OnMatchmakingStarted;
    customMatchmakingWrapper.OnMatchmakingStopped += OnMatchmakingStopped;
    customMatchmakingWrapper.OnMatchmakingPayload += OnMatchmakingPayload;
    customMatchmakingWrapper.OnMatchmakingError += OnMatchmakingError;
    }
    }
  9. 最後に、カスタムマッチメイキングメニューが閉じられたら、以下のコードで OnDisable() 関数を置き換えて、関数のバインディングをクリアします。

    private void OnDisable()
    {
    startMatchmakingButton.onClick.RemoveAllListeners();
    backButton.onClick.RemoveAllListeners();

    widgetSwitcher.OnRetryButtonClicked -= StartMatchmaking;
    widgetSwitcher.OnCancelButtonClicked -= CancelMatchmaking;
    widgetSwitcher.OnStateChanged -= OnSwitcherStateChanged;

    if (customMatchmakingWrapper)
    {
    customMatchmakingWrapper.OnMatchmakingStarted -= OnMatchmakingStarted;
    customMatchmakingWrapper.OnMatchmakingStopped -= OnMatchmakingStopped;
    customMatchmakingWrapper.OnMatchmakingPayload -= OnMatchmakingPayload;
    customMatchmakingWrapper.OnMatchmakingError -= OnMatchmakingError;
    }
    }

リソース