docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Namespace UnityEngine.Localization.PropertyVariants.TrackedObjects

    Classes

    JsonSerializerTrackedObject

    Uses JSON to apply changes to a tracked object. JSON can only be used with MonoBehaviour and ScriptableObject types.

    TrackedMeshFilter

    Tracks and applies variant changes to a MeshFilter.

    TrackedMonoBehaviourObject

    Uses JSON to apply variant data to target object.

    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 AudioSource 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";
        }
    }

    TrackedRectTransform

    Tracks and applies variant changes to a RectTransform.

    TrackedTransform

    Tracks and applies variant changes to a Transform.

    Enums

    JsonSerializerTrackedObject.ApplyChangesMethod

    Determines the type of property update that will be performed.

    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)