> For the complete documentation index, see [llms.txt](https://fullstackindie.gitbook.io/easy-code-for-vivox/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://fullstackindie.gitbook.io/easy-code-for-vivox/related-info/unity-gaming-services.md).

# Unity Gaming Services

**These are code examples are&#x20;**<mark style="color:orange;">**copied from some of Unity's Gaming Services**</mark>**.** I use these example methods throughout **EasyCode** docs especially when describing use cases for **Dynamic Async events** &#x20;

### GetJoinedLobbies() - <https://docs.unity.com/lobby/get-joined-lobbies.html>

```
    public async Task GetJoinedLobbies()
    {
        try
        {
            var lobbyIds = await LobbyService.Instance.GetJoinedLobbiesAsync();
        }
        catch (LobbyServiceException e)
        {
            Debug.Log(e);
        }
    }
```

### RemovePlayerFromLobby() - <https://docs.unity.com/lobby/leave-a-lobby.html>

```
    public async Task RemovePlayerFromLobby()
    {
        try
        {
            //Ensure you sign-in before calling Authentication Instance
            //See IAuthenticationService interface
            string playerId = AuthenticationService.Instance.PlayerId;
            await LobbyService.Instance.RemovePlayerAsync("lobbyId", playerId);
        }
        catch (LobbyServiceException e)
        {
            Debug.Log(e);
        }
    }
```

### LoadPlayerData() - <https://docs.unity.com/cloud-save/cloud-save-usage.html#Fetching_items>

```
    public async Task LoadPlayerData()
    {
        try
        {
            Dictionary<string, string> savedData = await CloudSaveService.Instance.Data.LoadAsync(new HashSet<string> { "key" });

            Debug.Log("Done: " + savedData["key"]);
        }
        catch (LobbyServiceException e)
        {
            Debug.Log(e);
        }
    }
```

### SavePlayerData() - <https://docs.unity.com/cloud-save/cloud-save-usage.html#Save_an_item>

```
    public async Task SavePlayerData()
    {
        try
        {
            var data = new Dictionary<string, object> { { "key", "someValue" } };
            await CloudSaveService.Instance.Data.ForceSaveAsync(data);
        }
        catch (Exception e)
        {
            Debug.Log(e);
        }
    }
```

### UpdatePlayerData() - <https://docs.unity.com/lobby/update-player-data.html>

```
    public async Task UpdatePlayerData()
    {
        try
        {
            UpdatePlayerOptions options = new UpdatePlayerOptions();

            options.Data = new Dictionary<string, PlayerDataObject>()
            {
                {
                    "existing data key", new PlayerDataObject(
                        visibility: PlayerDataObject.VisibilityOptions.Private,
                        value: "updated data value")
                },
                {
                    "new data key", new PlayerDataObject(
                        visibility: PlayerDataObject.VisibilityOptions.Public,
                        value: "new data value")
                }
            };

            //Ensure you sign-in before calling Authentication Instance
            //See IAuthenticationService interface
            string playerId = AuthenticationService.Instance.PlayerId;

            var lobby = await LobbyService.Instance.UpdatePlayerAsync("lobbyId", playerId, options);

        }
        catch (LobbyServiceException e)
        {
            Debug.Log(e);
        }
    }
```
