Services Core SDK API
The Services Core package provides a solution for initializing all Unity Gaming Services with a single call, and defines common components used by multiple packages. These standardized components aim to unify the overall experience of working with Unity Gaming Services packages.
Note: This API is supported in Unity Editor versions 2019.4 and higher.
UnityServices
namespace Unity.Services.Core
{
public static class UnityServices{}
}
Use this class to initialize all Unity Gaming Services that are currently installed in your project.
InitializeAsync
public static Task InitializeAsync(InitializationOptions options)
This method initializes all Unity Gaming Services that are currently installed in your project. This method returns a Task
that allows you to monitor the initialization's progression.
Parameter | Type | Description |
---|---|---|
options | InitializationOptions | This optional parameter acts as a key-value store that can facilitate unique SDK initialization specifications. |
Note: This method is only supported at runtime.
State
public static ServicesInitializationState State
This method returns the game’s current ServicesInitializationState
at runtime:
Value | Description |
---|---|
Uninitialized | Unity Services has not been initialized. |
Initializing | Unity Services is in the process of initializing. |
Initialized | Unity Services successfully initialized. |
InitializationOptions
namespace Unity.Services.Core
{
public class InitializationOptions{}
}
Initialization options act as a key-value store that can facilitate unique SDK initialization specifications. Pass these options through the InitializeAsync
method when initializing Unity Gaming Services SDKs.
TryGetOption
public bool TryGetOption(string key, out bool option)
public bool TryGetOption(string key, out int option)
public bool TryGetOption(string key, out float option)
public bool TryGetOption(string key, out string option)
These methods return true
for a specified key if any exists, and false
if it doesn’t.
Parameter | Type | Description |
---|---|---|
key | string | The key of the option you want to retrieve. |
option | various | The stored option associated with that key, if any exists. |
SetOption
public InitializationOptions SetOption(string key, bool value)
public InitializationOptions SetOption(string key, int value)
public InitializationOptions SetOption(string key, float value)
public InitializationOptions SetOption(string key, string value)
These methods store the value for a specified key.
Parameter | Type | Description |
---|---|---|
key | string | The key of the option you want to store. |
value | various | The stored option associated with that key, if any exists. |
Initialization example
The following example initializes all services at once, using the Environments initialization extension:
using System;
using Unity.Services.Core;
using Unity.Services.Core.Environments;
using UnityEngine;
public class InitializeUGS : MonoBehaviour {
public string environment = "production";
async void Start() {
try {
var options = new InitializationOptions()
.SetEnvironmentName(environment);
await UnityServices.InitializeAsync(options);
}
catch (Exception exception) {
// An error occurred during initialization.
}
}
}
Initialization debugging
In Services Core versions 1.4.2 and higher, you can enable a verbose mode for debugging purposes. After enabling verbose mode, the Services Core SDK will log information about the common configuration shared among all services in the Editor's console. To enable verbose:
- In the Unity Editor, select Edit > Project Settings > Player.
- In the Player settings window, click Other Settings.
- Under Script Compilation, add the following Scripting Define Symbol:
ENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING
. - Click Apply.
Exception types
ServicesInitializationException
A base exception type for errors occurring during service initialization.
CircularDependencyException
An exception that occurs when two registered IInitializablePackage
instances depend on each other. This error is a must-fix as it most likely highlights design issues.
RequestFailedException
A base exception type for failed requests. Each exception returns an int ErrorCode
to specify the failure reason:
Name | Code | Description |
---|---|---|
Unknown | 0 | Unable to determine the error. |
TransportError | 1 | DNS, TLS, and other transport errors that result in no valid HTTP response. |
Timeout | 2 | The request timed out because no response was received in the allotted time. |
ServiceUnavailable | 3 | The service is unavailable. This typically means the service is overloaded. |
ApiMissing | 4 | The API does not exist. |
RequestRejected | 5 | The request was rejected, typically before reaching the API endpoint. See title/details for more information. |
TooManyRequests | 50 | The request was rate-limited. The client is making requests too frequently. |
InvalidToken | 51 | The authentication token is malformed or invalid. |
TokenExpired | 52 | The authentication token is expired. |
Forbidden | 53 | The user does not have permission to perform the requested operation. |
NotFound | 54 | The requested resource cannot be found. |
InvalidRequest | 55 | The request was understood but the API refused to process it because one or more components was invalid. |