Photon - How to do a map selection ?

So I am working on a project that uses PUN and so I want to know how to do a map selection because I want my game to have multiple maps but I don’t know how to do it. If anyone helps me, it would be very nice. :slight_smile: (Also, i want to use a dropdown in the creation of the room and after that, there is a list of players where the host can press ‘PLAY’ to start the match for ALL players in the selected map)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CreateRoom : MonoBehaviour 
{
	[SerializeField]
	private Text _roomName;
	private Text RoomName
	{
		get { return _roomName; }
	}

    [SerializeField]
    private Toggle _privateToggle;
    private Toggle PrivateToggle
    {
        get { return _privateToggle;  }
    }

    public bool IsPrivate = false;

    public byte PlayerMax = 4;

    public Text RandomRoomNameText;
    private string randomRoomName;
    public string theRoomName;
    public byte sceneToLoad;

	public void OnClick_CreateRoom()
	{
		RoomOptions newRoomOptions = new RoomOptions() { IsVisible = IsPrivate, IsOpen = true, MaxPlayers = PlayerMax };
        newRoomOptions.customRoomProperties = new ExitGames.Client.Photon.Hashtable();
        newRoomOptions.customRoomProperties.Add("map", sceneToLoad);
        newRoomOptions.customRoomPropertiesForLobby = new string[] { "map" };


        if (PhotonNetwork.CreateRoom(theRoomName, newRoomOptions, TypedLobby.Default))
		{
			print("Verification accepted");
		}
		else
		{
			print("Verification failed");
		}
	}

	private void OnPhotonCreateRoomFailed(object[] codeAndMessage)
	{
		print("Failed to create a room: " + codeAndMessage[1]);
	}

	private void OnCreatedRoom()
	{
		print("Room succesfully created");
	}

    private void Start()
    {
        randomRoomName = "Room " + Random.Range(1, 999);
    }

    void Update()
    {
        RandomRoomNameText.text = randomRoomName;

        if(PrivateToggle.isOn == true)
        {
            IsPrivate = false;
        } else
        {
            IsPrivate = true;
        }

        if(RoomName.text == null)
        {
            theRoomName = randomRoomName;
        }
        else
        {
            theRoomName = RoomName.text;
        }
    }

}

Hi,

the network code looks good so far. The only thing you have to do is to update the value of sceneToLoad before creating the room. To do so, you can take a look at Unity’s Scripting API for the Dropdown. I guess you can use the onValueChanged event, to update the local variable.

When the client is in the room, you can iterate through PhotonNetwork.playerList to get every client in the same room. How you display them on screen, is your choice.

To let each client load the same scene, you can set PhotonNetwork.automaticallySyncScene to true and use PhotonNetwork.LoadLevel on the MasterClient. This way, the loaded level is stored in the Custom Room Properties and each client will load the same scene.