Version: 2023.1
LanguageEnglish
  • C#

RemoteSettings

class in UnityEngine

/

Implemented in:UnityEngine.UnityAnalyticsModule

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Provides access to your remote settings.

At the start of a new session of your application, Unity makes a network request for the latest remote settings configuration from the Analytics Service. Unity requests the Release configuration when running regular, non-development builds of your application, and requests the Development configuration when running development builds. Play mode in the Unity Editor counts as a development build.

Note: For Unity to request the Development configuration, you must build the application with Unity version 5.6.0p4+, 5.6.1p1+, 2017.1+, or Unity 5.5.3p4+, and tick the Development Build checkbox on the Build Settings window. If you build the game with an older version of Unity, Unity always requests the Release configuration.

The RemoteSettings object dispatches a BeforeFetchFromServer:: event before it makes the network request for settings.

The Remote Settings object then dispatches an Updated event if a configuration file is available. Note that if the network request fails and a remote configuration file is not available, the RemoteSettings object checks whether a local, cached configuration file is present. If so, it uses these cached values and still dispatches Updated. Updated is only not dispatched when the remote request fails and no cached version is present.

Whether or not the remote request succeeds, the RemoteSettings object dispatches the Completed event. The parameters passed to the Completed event provide the HTTP response code and whether a remote configuration file was received.

When the RemoteSettings object receives a remote configuration it caches the file for use when the current computer or device is offline. However, if your game instance has not saved the settings yet (such as when a player has no network connection the first time they run your game), then the RemoteSettings object does not dispatch an Updated event, and so does not update your game variables. Requesting the Remote Settings configuration over the network is an asynchronous process that might not complete before your initial Scene has finished loading, or might not complete successfully at all, so you should always initialize your game variables to reasonable defaults.

Note: The web service from which Unity downloads the Remote Settings configuration is read-only, but is not secured. This means that the configuration could be read by third-parties. You should not put sensitive or secret information into your Remote Settings. Similarly, the saved settings file could be read and modified by end-users (although any modifications are overwritten the next time a session starts with an available Internet connection).

Create remote settings as key-value pairs on your Analytics dashboard.

You can only store basic types in the Remote Settings (int, float, string and boolean).

See Also: Remote Settings (Manual).

using UnityEngine;

public class HandleRemoteSettings : MonoBehaviour { private void Start() { // Add this class's updated settings handler to the RemoteSettings.Updated event. RemoteSettings.Updated += RemoteSettingsUpdated; }

private static void RemoteSettingsUpdated() { Debug.Log("***** GOT NEW REMOTE SETTINGS ******"); Debug.Log(RemoteSettings.GetInt("testInt")); Debug.Log(RemoteSettings.GetString("testString")); Debug.Log(RemoteSettings.GetFloat("testFloat")); Debug.Log(RemoteSettings.GetBool("testBool")); Debug.Log(RemoteSettings.GetBool("testFakeKey")); Debug.Log(RemoteSettings.GetBool("testFakeKey", true)); Debug.Log(RemoteSettings.HasKey("qqq")); Debug.Log(RemoteSettings.HasKey("testInt")); Debug.Log(RemoteSettings.GetBool("unity.heatmaps")); } }

Static Methods

ForceUpdateForces the game to download the newest settings from the server and update its values.
GetBoolGets the value corresponding to remote setting identified by key, if it exists.
GetCountGets the number of keys in the remote settings configuration.
GetDictionaryGets a dictionary corresponding to the remote setting identified by key, if it exists.
GetFloatGets the value corresponding to remote setting identified by key, if it exists.
GetIntGets the value corresponding to remote setting identified by key, if it exists.
GetKeysGets an array containing all the keys in the remote settings configuration.
GetLongGets the value corresponding to remote setting identified by key, if it exists.
GetObjectGets the object corresponding to the remote setting identified by key, if it exists.
GetStringGets the value corresponding to remote setting identified by key, if it exists.
HasKeyReports whether the specified key exists in the remote settings configuration.
WasLastUpdatedFromServerReports whether or not the settings available from the RemoteSettings object were received from the Analytics Service during the current session.

Events

BeforeFetchFromServerDispatched before the RemoteSettings object makes the network request for the latest settings.
CompletedDispatched when the network request made by the RemoteSettings object to fetch the remote configuration file is complete.
UpdatedDispatched when a remote settings configuration is fetched and successfully parsed from the server or from local cache.

Delegates

UpdatedEventHandlerDefines the delegate signature for handling RemoteSettings.Updated events.