Class LocalizedAsset<TObject>
Provides a way to reference an AssetTableEntry inside of a specific AssetTable and request the localized asset.
Inherited Members
Namespace: UnityEngine.Localization
Syntax
[Serializable]
public class LocalizedAsset<TObject> : LocalizedAssetBase, ISerializationCallbackReceiver where TObject : Object
Type Parameters
Name | Description |
---|---|
TObject | The type that should be supported. This can be any type that inherits from UnityEngine.Object. |
Examples
This example shows how a LocalizedAsset<TObject> can be used to localize a Prefabs. See also LocalizedGameObject and LocalizedGameObjectEvent.
public class LocalizedPrefabExample : MonoBehaviour
{
[Serializable]
public class LocalizedPrefab : LocalizedAsset<GameObject> {}
public LocalizedPrefab localizedPrefab;
GameObject currentInstance;
void OnEnable()
{
localizedPrefab.AssetChanged += UpdatePrefab;
}
void OnDisable()
{
localizedPrefab.AssetChanged -= UpdatePrefab;
}
void UpdatePrefab(GameObject value)
{
if (currentInstance != null)
Destroy(currentInstance);
currentInstance = Instantiate(value);
}
}
Properties
CurrentLoadingOperation
The current loading operation for the asset when using AssetChanged. This is null
if a loading operation is not available.
Declaration
public AsyncOperationHandle<TObject>? CurrentLoadingOperation { get; }
Property Value
Type | Description |
---|---|
Nullable<AsyncOperationHandle<TObject>> |
HasChangeHandler
Returns true
if AssetChanged has any subscribers.
Declaration
public bool HasChangeHandler { get; }
Property Value
Type | Description |
---|---|
Boolean |
WaitForCompletion
Determines if WaitForCompletion should be used to force loading to be completed immediately. See Synchronous Workflow for further details. Please note that WaitForCompletion is not supported on WebGL.
Declaration
public override bool WaitForCompletion { set; }
Property Value
Type | Description |
---|---|
Boolean |
Overrides
Methods
ForceUpdate()
Declaration
protected override void ForceUpdate()
Overrides
LoadAsset()
Provides a localized asset from a AssetTable with the TableReference and the the asset that matches TableEntryReference. Uses WaitForCompletion to force the loading to complete synchronously. Please note that WaitForCompletion is not supported on WebGL.
Declaration
public TObject LoadAsset()
Returns
Type | Description |
---|---|
TObject | Returns the localized asset. |
LoadAssetAsObjectAsync()
Returns the localized asset as a UnityEngine.Object.
Declaration
public override AsyncOperationHandle<Object> LoadAssetAsObjectAsync()
Returns
Type | Description |
---|---|
AsyncOperationHandle<Object> |
Overrides
LoadAssetAsync()
Provides a localized asset from a AssetTable with the TableReference and the the asset that matches TableEntryReference.
Declaration
public AsyncOperationHandle<TObject> LoadAssetAsync()
Returns
Type | Description |
---|---|
AsyncOperationHandle<TObject> | Returns the loading operation for the request. |
Remarks
The asset may have already been loaded, either during a previous operation or if Preload mode is used. Check the IsDone property to see if the asset is already loaded and therefore is immediately available. See Async operation handling for further details.
Examples
This example shows how LoadAssetAsync() can be used to request a sprite asset when the SelectedLocale changes.
public class LocalizedSpriteExample : MonoBehaviour
{
public LocalizedSprite localizedSprite;
public Image image;
void OnEnable()
{
LocalizationSettings.SelectedLocaleChanged += SelectedLocaleChanged;
StartCoroutine(LoadAssetCoroutine());
}
void OnDisable()
{
LocalizationSettings.SelectedLocaleChanged -= SelectedLocaleChanged;
}
void SelectedLocaleChanged(Locale obj)
{
StartCoroutine(LoadAssetCoroutine());
}
IEnumerator LoadAssetCoroutine()
{
var operation = localizedSprite.LoadAssetAsync();
yield return operation;
image.sprite = operation.Result;
}
}
Reset()
Called when values are changed due to a change made via serialization, such as via the inspector.
Declaration
protected override void Reset()
Overrides
Events
AssetChanged
Provides a callback that will be invoked when the asset is available or has changed.
Declaration
public event LocalizedAsset<TObject>.ChangeHandler AssetChanged
Event Type
Type | Description |
---|---|
LocalizedAsset.ChangeHandler<> |
Remarks
The following events will trigger an update:
- The first time the action is added to the event.
- The SelectedLocale changing.
- The TableReference or TableEntryReference changing.
When the first LocalizedAsset<TObject>.ChangeHandler is added, a loading operation (see CurrentLoadingOperation) will automatically start and the localized asset will be sent to the subscriber when completed. Any adding additional subscribers added after loading has completed will also be sent the latest localized asset when they are added. This ensures that a subscriber will always have the correct localized value regardless of when it was added.
Examples
This example shows how the AssetChanged event could be used to change the Font on some localized Text.
public class LocalizedTextWithFont : MonoBehaviour
{
[Serializable]
public class LocalizedFont : LocalizedAsset<Font> {}
public LocalizedString localizedString;
public LocalizedFont localizedFont;
public Text uiText;
void OnEnable()
{
localizedString.StringChanged += UpdateText;
localizedFont.AssetChanged += FontChanged;
}
void OnDisable()
{
localizedString.StringChanged -= UpdateText;
localizedFont.AssetChanged -= FontChanged;
}
void FontChanged(Font f)
{
uiText.font = f;
}
void UpdateText(string s)
{
uiText.text = s;
}
}