Lobby-start

Project Introduction

The project contains a single scene which serves as the Lobby interface. The GUI events are already hooked up in the editor for you.

The Lobby interface is divided into 3 parts: The header, the left panel, and the right panel.

Header UI elements

Register button

Will be used to register the local player to the lobby server.

Click on the button will invoke the RegisterPlayer() method of the LobbyDemo object.

Create room button

Will be used to create new room.

Click on the button will invoke the CreateNewRoom() method of the LobbyDemo object.

Leave room button

Will be used to leave the local player's current room.

Click on the button will invoke the LeaveRoom() method of the LobbyDemo object.

Left panel UI elements

Previous button

Will be used to load the rooms on the previous page.

Click on the button will invoke the PreviousPage() method of the LobbyDemo object.

Refresh button

Will be used to re-load the rooms on the current page.

Click on the button will invoke the GetRooms() method of the LobbyDemo object.

Next button

Will be used to load the rooms on the next page.

Click on the button will invoke the NextPage() method of the LobbyDemo object.

Rooms list

Will be used to display the rooms on the current page.

Right panel UI elements

Players list

Will be used to display the players in local player's current room.

Room chat list

Will be used to display chat messages.

Room chat input field

Will be used to enter new room chat messages.

Press enter will invoke the SendRoomMessage(string) method of the LobbyDemo object.

Modeling Your Custom Room Data

In this tutorial, we want to separate players in a room to 2 teams. We created TeamCustomData to keep track of players in a team and RoomCustomData to keep track of teams of the room.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
[Serializable]
public class RoomCustomData
{
public string name;
public TeamCustomData team1;
public TeamCustomData team2;
}
[Serializable]
public class TeamCustomData
{
// Stores playerIds, so players knows which team they are on.
public List<string> players = new List<string>();
}

In the next steps, we will integrate SWNetwork.Lobby APIs to make the scene come to live.