シーンオブジェクト
ロビー

シングルプレイヤーゲームをマルチプレイへ変換する

このページでは、新しいネットワーキングシステムを利用してシングルプレイヤーゲームをマルチプレイヤーゲームに変換する手順を説明しています。ここでご紹介する手順は簡素化された大まかなものであり、実際のゲーム用にこのとおりに行って、うまく行くとは限りませんが、基本的な方法はご理解いただけるでしょう。

NetworkManager の設定

  • 新規ゲームオブジェクトをシーンに追加し、“NetworkManager” へと名前を変更します。
  • NetworkManager コンポーネントを新規作成したゲームオブジェクトに追加します。
  • NetworkManagerHUD コンポーネントをゲームオブジェクトに追加します。これによりネットワークゲームの状態を管理するためのデフォルト UI が提供されます。

NetworkManager を使用する を参照してください。

プレイヤー プレハブの設定

  • ゲーム内にあるプレイヤーオブジェクトのプレハブを見付けます。またはプレイヤーオブジェクトからプレハブを作成します。
  • NetworkIdentity コンポーネントをプレイヤー プレハブに追加します。
  • NetworkIdentity で LocalPlayerAuthority ボックスにチェックを入れます。
  • NetworkManager の “Spawn Info” セクションの playerPrefab にプレイヤー プレハブを設定します。
  • シーンにプレイヤーオブジェクト インスタンスがある場合はそれを削除します。

プレイヤーオブジェクト を参照してください。

プレイヤーの動き

  • NetworkTransform コンポーネントをプレイヤー プレハブに追加します。
  • 入力および制御スクリプトを、isLocalPlayer を考慮するように更新します。
  • オブジェクト生成されたプレイヤーおよび isLocalPlayer を使用してカメラを修正します。

例えば、このスクリプトではローカルプレイヤー用の入力のみを処理します。

using UnityEngine;
using UnityEngine.Networking;

public class Controls : NetworkBehaviour
{
    void Update()
    {
        if (!isLocalPlayer)
        {
            // exit from update if this is not the local player
            return;
        }

        // handle player input for movement
    }
}

基本的なプレイヤーの状態

  • MonoBehaviour の代わりに NetworkBehaviour を継承したスクリプトを作成します。
  • 重要な変数に SyncVars 属性を付けます。

詳細はステートの同期を参照してください。

ネットワークアクション

  • MonoBehaviour の代わりに NetworkBehaviour を継承した重要なアクションを実行するスクリプトを作成します。
  • コマンドで重要なプレイヤーアクションを実行して更新する関数を呼び出します。

詳細はリモートアクションを参照してください。

ノンプレイヤー オブジェクト

エネミーのようなノンプレイヤーのプレハブを修正していきます。

  • NetworkIdentify コンポーネントを追加します。
  • NetworkTransform コンポーネントを追加します。
  • NetworkManager に生成するプレハブを登録します。
  • ゲームの状態とアクションのスクリプトを更新します。

オブジェクト生成

  • オブジェクト生成スクリプトを NetworkBehaviour に変更します。
  • isServer プロパティーまたは OnStartServer() 関数を使用して、サーバー上でのみオブジェクトを生成するように変更します。
  • オブジェクトを作成するために NetworkServer.Spawn() を呼び出します。

プレイヤーの生成位置

  • 新規のゲームオブジェクトを追加し、プレイヤーの開始位置を設定します。
  • 新規のゲームオブジェクトに NetworkStartPosition コンポーネントを追加します。

ロビー

  • ロビーのシーンを作成します。
  • multiplayer-lobby パッケージをインポートします。
  • GuiLobbyManager プレハブをシーンに追加します。
  • マネージャーの設定を行います。
    • シーン
    • プレハブ
    • オブジェクト生成
シーンオブジェクト
ロビー