Class EditorPropertyDriver
Allows for making temporary changes to Components in a scene whilst previewing a Locale. Any changes made to a property that is marked as driven will be ignored when saving the scene and reverted when the property is unregistered or SelectedLocale is set to null.
Namespace: UnityEngine.Localization
Syntax
public static class EditorPropertyDriver
Methods
RegisterProperty(Object, String)
Mark the property as Driven in the editor. When a property is marked as driven it is considered to be a temporary change, that is the new values applied to the property will be ignored and not saved into the scene. The value will revert back to its original value when UnregisterProperty(Object, String) is called or SelectedLocale is set to null. Calling this method in play mode or a player build will do nothing.
Declaration
public static void RegisterProperty(Object target, string propertyPath)
Parameters
Type | Name | Description |
---|---|---|
Object | target | The object that the property is part of. |
String | propertyPath | The serialized property path. The value that would be used to access using a SerializedProperty |
Examples
This shows how to support non-destructive Edit Mode changes using EditorPropertyDriver.
using UnityEngine;
using UnityEngine.Localization;
// To support Edit mode we need to use ExecuteAlways.
[ExecuteAlways]
[RequireComponent(typeof(TextMesh))]
public class EditModeSupportExample : MonoBehaviour
{
public LocalizedString localizedString;
TextMesh m_TextMesh;
void Start()
{
localizedString.StringChanged += UpdateTextMesh;
m_TextMesh = GetComponent<TextMesh>();
}
void UpdateTextMesh(string text)
{
// This will let us make temporary changes to a serialized property.
// When the Locale is changed back to None the changes will be reverted
// back to the original value. This must be called before we make any changes.
// Calling this in a player build will do nothing.
EditorPropertyDriver.RegisterProperty(m_TextMesh, "m_Text");
m_TextMesh.text = text;
}
}
UnregisterProperty(Object, String)
Removed the property tracking and reverts the value back to the original value it was before RegisterProperty(Object, String) was called. In most cases you will not need to call this unless the driven properties are likely to change dynamically. Calling this method in play mode or a player build will do nothing.
Declaration
public static void UnregisterProperty(Object target, string propertyPath)
Parameters
Type | Name | Description |
---|---|---|
Object | target | The object that the property is part of. |
String | propertyPath | The serialized property path. The value that would be used to access using a SerializedProperty |