0

プレイヤーがランダムな部屋に参加するように Photon スクリプトを作成しました。部屋が見つからない場合、プレイヤーは自動的に新しい部屋を作成します。ただし、ゲームをビルドして 2 台の異なるコンピューターで実行すると、両方のコンピューターにルームが見つからないため、両方が独自のルームを作成します。誰かが理由を教えてください。

必要なプレイヤーが 1 人だけの場合はゲームが開始されますが、2 人が必要な場合は、上記の問題により開始されません。

using UnityEngine;
using System.Collections;

public class NetworkManager : Photon.PunBehaviour
{

public string playerprefabname = "player";
Vector3 spawner = new Vector3(9.9f, -3.8f, -0.1f);


// Use this for initialization
void Start()
{

    //Log stuff to console
    PhotonNetwork.logLevel = PhotonLogLevel.Full;

    //Connect
    PhotonNetwork.ConnectUsingSettings("v0.1");

    //Sync scenes
    PhotonNetwork.automaticallySyncScene = true;

}

//Display connection state on game
void OnGUI()
{
    GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
}


public override void OnConnectedToMaster()
{
    PhotonNetwork.JoinLobby();
}

public override void OnJoinedLobby()
{
    PhotonNetwork.JoinRandomRoom();
}

//Create a room if fail to join one
void OnPhotonRandomJoinFailed()
{
    Debug.Log("Can't join random room!");
    RoomOptions roomOptions = new RoomOptions() { isVisible = false, maxPlayers = 2 };
    PhotonNetwork.CreateRoom(null, roomOptions, TypedLobby.Default);
}

// when joined to a room check if 3 players are there, then send to level
public override void OnJoinedRoom()
{
    if (PhotonNetwork.playerList.Length == 2)
    {
        Debug.Log("2 Players In Room Starting Level");

        GameObject myPlayer = PhotonNetwork.Instantiate(playerprefabname, spawner, spawnpoint.rotation, 0);

        //GameObject MyCam = PhotonNetwork.Instantiate ("Camera", CamPos, Quaternion.identity, 0);
        GameObject camera = GameObject.FindWithTag("MainCamera");

        if (camera != null)
        {
            CameraController followScript = camera.GetComponent("CameraController") as CameraController;
            if (followScript != null)
            {
                followScript.target = myPlayer;
            }
        }

    }
}

public override void OnPhotonPlayerConnected(PhotonPlayer newPlayer)
{
    if (PhotonNetwork.playerList.Length == 2)
    {
        Debug.Log("2 Players In Room Starting Level");

        GameObject myPlayer = PhotonNetwork.Instantiate(playerprefabname, spawner, spawnpoint.rotation, 0);

        //GameObject MyCam = PhotonNetwork.Instantiate ("Camera", CamPos, Quaternion.identity, 0);
        GameObject camera = GameObject.FindWithTag("MainCamera");

        if (camera != null)
        {
            CameraController followScript = camera.GetComponent("CameraController") as CameraController;
            if (followScript != null)
            {
                followScript.target = myPlayer;
            }
        }

    }
}

}

4

2 に答える 2

2

その理由は、ルームを作成するときに isVisible オプションが false に設定されているためです。そのため、部屋は部屋リストに表示されず、ランダム参加で選択することはできません。

于 2015-10-20T09:05:01.227 に答える
0

コンピューターは、LAN 経由またはワイヤレス経由などで相互に接続されていましたか? 2 台のコンピューター間に接続がない場合、ルームが作成されます。

于 2015-10-19T16:07:21.893 に答える