Class TrackedObject
  
Provides common Property Variant functionality for a Unity object.
You can inherit from this class to create custom object trackers.
This shows how to create a UnityEngine.Localization.PropertyVariants.TrackedObjects to support the  component.
[Serializable]
[DisplayName("Audio Source")]
[CustomTrackedObject(typeof(AudioSource), false)]
public class TrackedAudioSource : TrackedObject
{
public override AsyncOperationHandle ApplyLocale(Locale variantLocale, Locale defaultLocale)
{
    var audioClipProperty = GetTrackedProperty("m_audioClip");
    if (audioClipProperty == null)
        return default;
    // Check if the Asset is stored in an Asset Table
    if (audioClipProperty is LocalizedAssetProperty localizedAssetProperty &&
        localizedAssetProperty.LocalizedObject is LocalizedAudioClip localizedAudioClip)
    {
        localizedAudioClip.LocaleOverride = variantLocale;
        var loadHandle = localizedAudioClip.LoadAssetAsync();
        if (loadHandle.IsDone)
            AudioClipLoaded(loadHandle);
        else
        {
            loadHandle.Completed += AudioClipLoaded;
            return loadHandle;
        }
    }
    // Check if the Asset is stored locally
    else if (audioClipProperty is UnityObjectProperty localAssetProperty)
    {
        if (localAssetProperty.GetValue(variantLocale.Identifier, defaultLocale.Identifier, out var clip))
            SetAudioClip(clip as AudioClip);
    }
    return default;
}
void AudioClipLoaded(AsyncOperationHandle<AudioClip> loadHandle)
{
    SetAudioClip(loadHandle.Result);
}
void SetAudioClip(AudioClip clip)
{
    var source = (AudioSource)Target;
    source.Stop();
    source.clip = clip;
    if (clip != null)
        source.Play();
}
public override bool CanTrackProperty(string propertyPath)
{
    // We only care about the Audio clip
    return propertyPath == "m_audioClip";
}
}
Inheritance
TrackedObject
 
Syntax
public abstract class TrackedObject : ISerializationCallbackReceiver
 
Properties
  
Target
The target that the variants will be applied to.
Declaration
public Object Target { get; set; }
 
Property Value
TrackedProperties
The tracked properties for this object.
Declaration
public IList<ITrackedProperty> TrackedProperties { get; }
 
Property Value
Methods
  
AddTrackedProperty(ITrackedProperty)
Add a tracked property for this object.
Declaration
public virtual void AddTrackedProperty(ITrackedProperty trackedProperty)
 
Parameters
AddTrackedProperty<T>(String)
Create and add a tracked property for this object.
Declaration
public T AddTrackedProperty<T>(string propertyPath)
    where T : ITrackedProperty, new()
 
Parameters
| Type | Name | Description | 
| String | propertyPath |  | 
Returns
Type Parameters
ApplyLocale(Locale, Locale)
Apply the TrackedProperties for variantLocale.
If a value does not exist for this locale then the value for defaultLocale is used as a fallback.
Declaration
public abstract AsyncOperationHandle ApplyLocale(Locale variantLocale, Locale defaultLocale)
 
Parameters
| Type | Name | Description | 
| Locale | variantLocale | The chosen variant to apply to Target. | 
| Locale | defaultLocale | The fallback Locale to use when a value does not exist for this variant. | 
Returns
| Type | Description | 
| AsyncOperationHandle |  | 
CanTrackProperty(String)
Can be used to reject certain properties.
Declaration
public virtual bool CanTrackProperty(string propertyPath)
 
Parameters
| Type | Name | Description | 
| String | propertyPath |  | 
Returns
CreateCustomTrackedProperty(String)
Declaration
public virtual ITrackedProperty CreateCustomTrackedProperty(string propertyPath)
 
Parameters
| Type | Name | Description | 
| String | propertyPath |  | 
Returns
GetTrackedProperty(String)
Return the tracked property for the property path.
Declaration
public virtual ITrackedProperty GetTrackedProperty(string propertyPath)
 
Parameters
| Type | Name | Description | 
| String | propertyPath | The serialized property path. | 
Returns
GetTrackedProperty<T>(String, Boolean)
Return the tracked property for the property path.
Declaration
public T GetTrackedProperty<T>(string propertyPath, bool create = true)
    where T : ITrackedProperty, new()
 
Parameters
| Type | Name | Description | 
| String | propertyPath | The serialized property path. | 
| Boolean | create | Specify whether to create a property if no existing property is found. | 
Returns
Type Parameters
PostApplyTrackedProperties()
Called when the variants have been applied to Target.
Declaration
protected virtual void PostApplyTrackedProperties()