Registering Player
Players must register to the lobby server before accessing other lobby APIs.
Please visit the Lobby API documentation.
Register PlayerIn this tutorial, we allow players to pick their own names. The starter project already implemented the popup view to let players enter their names. You can use the ShowRegisterPlayerPopup(Action<bool, string>) method on the LobbyGUI object to display the popup view.
If the player entered a name and clicked the OK button in the popup, the ok bool value will be true and playerName string value will be the name that the player entered.
Checking into SocketWeaver
For this tutorial, We are going to use the player entered name as the custom PlayerId to check into SocketWeaver services, and we will reused the entered name as the custom string data to register the player to the Lobby server.
Open the LobbyDemo.cs script and update the RegisterPlayer() method.
public void RegisterPlayer()
{
GUI.ShowRegisterPlayerPopup((bool ok, string playerName) =>
{
if (ok)
{
// store the playerName
// playerName also used to register local player to the lobby server
playerName_ = playerName;
NetworkClient.Instance.CheckIn(playerName, (bool successful, string error) =>
{
if (!successful)
{
Debug.LogError(error);
}
});
}
});
}
Adding Lobby Connected Event handler
void Start()
{
// Subscribe to Lobby events
NetworkClient.Lobby.OnNewPlayerJoinRoomEvent += Lobby_OnNewPlayerJoinRoomEvent;
NetworkClient.Lobby.OnPlayerLeaveRoomEvent += Lobby_OnPlayerLeaveRoomEvent;
NetworkClient.Lobby.OnRoomCustomDataChangeEvent += Lobby_OnRoomCustomDataChangeEvent;
NetworkClient.Lobby.OnRoomMessageEvent += Lobby_OnRoomMessageEvent;
NetworkClient.Lobby.OnPlayerMessageEvent += Lobby_OnPlayerMessageEvent;
NetworkClient.Lobby.OnLobbyConncetedEvent += Lobby_OnLobbyConncetedEvent;
}
void onDestroy()
{
// Unsubscrible to Lobby events
NetworkClient.Lobby.OnNewPlayerJoinRoomEvent -= Lobby_OnNewPlayerJoinRoomEvent;
NetworkClient.Lobby.OnPlayerLeaveRoomEvent -= Lobby_OnPlayerLeaveRoomEvent;
NetworkClient.Lobby.OnRoomCustomDataChangeEvent -= Lobby_OnRoomCustomDataChangeEvent;
NetworkClient.Lobby.OnRoomMessageEvent -= Lobby_OnRoomMessageEvent;
NetworkClient.Lobby.OnPlayerMessageEvent -= Lobby_OnPlayerMessageEvent;
NetworkClient.Lobby.OnLobbyConncetedEvent -= Lobby_OnLobbyConncetedEvent;
}
Registering Player
You can use SWLobby's member method Register(string, Action<bool, SWRegisterReply, SWLobbyError>) to register the player.
Open the LobbyDemo.cs script and implement the Lobby_OnLobbyConncetedEvent() method.
void Lobby_OnLobbyConncetedEvent()
{
Debug.Log("Lobby_OnLobbyConncetedEvent");
// Register the player using the entered player name.
NetworkClient.Lobby.Register(playerName_, (successful, reply, error) =>
{
if (successful)
{
Debug.Log("Lobby registered " + reply);
if (reply.started)
{
// Player is in a room and the room has started.
// Call NetworkClient.Instance.ConnectToRoom to connect to the game servers of the room.
}
else if (reply.roomId != null)
{
// Player is in a room.
GetRooms();
GetPlayersInCurrentRoom();
}
else
{
// Player is not in a room.
GetRooms();
}
}
else
{
Debug.Log("Lobby failed to register " + error);
}
});
}
Last updated
Was this helpful?