Version: 2021.1
Managing Remote Settings in the Unity Editor
Remote Settings scripting

Remote Settings component

Note: Unity Remote Config is now available as a preview packageA preview* package is in development and not yet ready for production. A package in preview might be at any stage of development, from the initial stages to near completion.
See in Glossary. Remote Config is an improved offering that allows you to change the behavior and appearance of your game without requiring a new binary. You can remotely enable or disable features, change the specifics of your game to target specific audiences, or run special events by scheduling new content releases.*

Use the Remote Settings componentA functional part of a GameObject. A GameObject can contain any number of components. Unity has many built-in components, and you can create your own by writing scripts that inherit from MonoBehaviour. More info
See in Glossary
to control the properties of other components in your SceneA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
without writing any code. The Remote Settings component is part of the Remote Settings plug-inA set of code created outside of Unity that creates functionality in Unity. There are two kinds of plug-ins you can use in Unity: Managed plug-ins (managed .NET assemblies created with tools like Visual Studio) and Native plug-ins (platform-specific native code libraries). More info
See in Glossary
, which you can download from the Unity Asset Store.

Before using the Remote Settings component, you must enable Remote Settings in your project and should also create your Remote Settings key-value pairs using the Unity Analytics Dashboard.

You can place the Remote Settings component on the same GameObject as another component you want to control, or place it on a different GameObject. The only requirement is that both the Remote Settings component and any controlled components are active in the same Scene.

Using the Remote Settings component

To connect a remote setting to a component property or field:

  1. Go to Window > Unity AnalyticsA data platform that provides analytics for your Unity game. More info
    See in Glossary
    > Remote SettingsRemote settings are game variables that you can set remotely on your Analytics Dashboard. More info
    See in Glossary
    to open the Remote Settings window.

  2. Choose the configuration (Release or Development) that contains the setting you are going to connect.

  3. Go to the InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
    See in Glossary
    window for the GameObject that you want to hold the Remote Settings component.

  4. Click the Add Component button.

  5. Find the AnalyticsAbbreviation of Unity Analytics
    See in Glossary
    > RemoteSettings script in the list.

  6. Click Add Component to add the Remote Settings component to the GameObject.

  7. To add a new parameter mapping, click the + icon at the bottom of the Remote Setting component’s Parameters list.

  8. Drag the GameObject or the component that you want to remotely control to the parameter’s ObjectThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
    See in Glossary
    field.

  9. Select the property or field you want to control in the parameter’s Field drop-down list.

  10. Choose the Remote Setting Key that you want to use to control this component property or field.

  11. Click the + icon to add additional parameters.

If no Remote Settings Key names appear in the list, open the Remote Settings window (menu: Window > Unity Analytics > Remote Settings) and click Refresh. If your remote settings still do not display in this window, check that you have an Internet connection and that your project is properly set up (see Enabling Remote Settings).

If the wrong keys appear in the list of key names, open the Remote Settings window (menu: Window > Unity Analytics > Remote Settings) and set the Active Configuration to the configuration containing the correct set of keys.

The Remote Settings component cannot set the variables of prefabsAn asset type that allows you to store a GameObject complete with components and properties. The prefab acts as a template from which you can create new object instances in the scene. More info
See in Glossary
that Unity loads later in the Scene than the component itself. Similarly, a Remote Settings component that is loaded later in the Scene can only set variables of objects that are part of the same prefab. Use more than one Remote Settings component to handle these types of situations.

Setting non-primitive properties

You can use the Remote Settings component to set the primitive fields and properties of an object directly. However, to set the variables of an object’s non-primitive members, you do have to write some additional code. The easiest approach is to add primitive-type properties to an object that you can set using the Remote Settings component. Then, implement the setter functions of these properties to update the intended variables of the non-primitive objects.

Code example

In the example below, the class sets the base color of the Material assigned to a rendered GameObject. To do this, the class defines a primitive string-type property that takes an HTML-style color string. The setter for this property parses the string and sets the Material color accordingly.

using UnityEngine;

public class RemoteColorChanger : MonoBehaviour
{
    private string _colorString = "";
    public string ColorString {

        get { 
            return _colorString; 
        }

        set { 
            Color colorObject;
            if (ColorUtility.TryParseHtmlString (value, out colorObject)) {
                _colorString = value;
                Renderer renderer = GetComponent<Renderer> ();

                if (renderer != null) {
                    MaterialPropertyBlock materialProperties = new MaterialPropertyBlock ();
                    renderer.GetPropertyBlock (materialProperties);
                    materialProperties.SetColor ("_Color", colorObject);
                    renderer.SetPropertyBlock (materialProperties);
                } 
            } else {
                Debug.LogWarning ("Invalid color string: " + value);
            }
        }
    }
}

Using the code example

You can add this RemoteColorChanger script to any GameObject that has a Renderer component. You can then use the Remote Settings component to map a setting key to the ColorString property. In this example, the script is a component of a Cube object.

A Remote Settings component mapping the ColorString Remote Setting key
A Remote Settings component mapping the ColorString Remote Setting key

The matching key-value pair on the Remote Settings page of your Analytics Dashboard looks like the following:

The ColorString setting defined on the Analytics Dashboard
The ColorString setting defined on the Analytics Dashboard

Use the same technique to set any non-primitive value.



  • 2017–05–30 Page published

  • 2017–05–30 - Service compatible with Unity 5.5 onwards at this date but version compatibility may be subject to change.

  • New feature in Unity 2017.1

Managing Remote Settings in the Unity Editor
Remote Settings scripting