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

シングルプレイヤーゲームを Unity Multiplayer に変換

ここでは、新しい Unity Multiplayer ネットワークシステムを使用して、シングルプレイヤーゲームをマルチプレイヤーゲームに変換する手順について説明します。 ここで説明するプロセスは、ゲームのために実際に使用する単純化された、より高レベルのプロセスを説明します。 必ずしも、この通りに動作するとは限りませんが、プロセスの基本的な方法を紹介します。

NetworkManager の設定

  • シーンに新しいゲームオブジェクトを追加し、 NetworkManager という名前に変更します。
  • __NetworkManager__ コンポーネントを NetworkManager ゲームオブジェクトに加えます。
  • NetworkManagerHUD コンポーネントをゲームオブジェクトに加えます。 これは、ネットワークゲームの状態を管理するデフォルト UI を提供します。

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

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

  • ゲーム内のプレイヤーゲームオブジェクトのプレハブを検索するか、プレイヤーゲームオブジェクトのプレハブを作成してください。
  • 作成したプレイヤープレハブに NetworkIdentity コンポーネントを加えます。
  • NetworkIdentity の LocalPlayerAuthority にチェックを入れます。
  • Network Manager の Spawn Info セクションで playerPrefab に作成したプレイヤープレハブを設定します。
  • プレイヤーゲームオブジェクトのインスタンスがシーン内に存在する場合は、それをシーンから削除します。

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

プレイヤーの動き

  • プレイヤープレハブに NetworkTransform コンポーネントを加えます。
  • isLocalPlayer に基づいて入力を更新しスクリプトを制御します。
  • 生成されたプレイヤーと isLocalPlayer を利用するためにカメラを修正します。

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

using UnityEngine;
using UnityEngine.Networking;

public class Controls : NetworkBehaviour
{
    void Update()
    {
        if (!isLocalPlayer)
        {
            // これがローカルプレイヤーでなければ、Update を強制終了
            return;
        }

        // 動きのためのプレイヤー入力を処理
    }
}

基本的なプレイヤーゲーム状態

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

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

ネットワークによるアクション

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

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

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

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

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

オブジェクト生成

  • オブジェクト生成スクリプトを NetworkBehaviour に変更します。
  • Modify spawners to only run on the server (use isServer property or the OnStartServer() function)
  • 作成されたゲームオブジェクトの NetworkServer.Spawn() を呼び出します。

プレイヤーの生成位置

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

ロビー

  • ロビーのシーンを作成します。
  • ゲームオブジェクトをシーンに加え、NetworkLobbyManager に名前を変えます。
  • 新しいゲームオブジェクトに NetworkLobbyManager コンポーネントを加えます。
  • Manager を設定します。
    • シーン
    • プレハブ
    • Spawner
シーンオブジェクト
Multiplayer のロビー