Synchronization of player names in a session
Expose and read player display names as session player properties in order to allow all players to view each other’s names.
When a player is authenticated through the Authentication service, you can write the player's name into the session as a player property, and update it during the session lifecycle.
You can achieve this functionality using the following two extension methods:
WithPlayerName(VisibilityPropertyOptions visibility)to enable synchronization on session creation and join.GetPlayerName()to read the name from any session player.
Enable player name sync in session options
Use WithPlayerName to synchronize the player's authenticated name into the session with a chosen visibility.
The following example demonstrates how to enable player-name synchronization on session creation:
var myPlayerName = "CustomName";
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
await AuthenticationService.Instance.UpdatePlayerNameAsync(myPlayerName);
// Configure your session and enable name sync (member visibility makes it readable by other members)
var sessionOptions = new SessionOptions
{
MaxPlayers = 4,
Type = "Session"
}.WithPlayerName(VisibilityPropertyOptions.Member);Note: Use VisibilityPropertyOptions.Member or VisibilityPropertyOptions.Public so other players can read the name. Use VisibilityPropertyOptions.Private if you don't want names to be visible to others. In that case, other players’ GetPlayerName() calls return null.
Read player names from the session
Use GetPlayerName to retrieve the synchronized name from any player’s properties.
// Read your own player name (from the local session player)
string myName = session.CurrentPlayer.GetPlayerName();
// Read other players’ names
foreach (var player in session.Players)
{
var name = player.GetPlayerName() ?? $"Player {player.Id}";
UnityEngine.Debug.Log($"Player {player.Id} name: {name}");
}If a name isn’t available for any reason, GetPlayerName() returns null. For example, a name might be unavailable because the player hasn’t set a name, or the property isn't visible.
The player must be signed in and have a player name available via the Authentication service. Synchronization occurs while the session is connected. Updates made while disconnected won’t propagate until reconnected.