Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Error: in Localizing Sprites "Use Existing Build(requires build groups)", set to an Android build

Discussion in 'Localization Tools' started by cathode26, Nov 16, 2021.

  1. cathode26

    cathode26

    Joined:
    Jul 21, 2011
    Posts:
    27
    When localizing Sprites there is an error on
    localizeSpriteEvent.AssetReference = localizedSprite;

    I have set my LocalizationTables to Preload all tables.
    I have built groups and loaded them to the correct location.
    I am using Localization version 1.0.5.
    I am using Addressables version 1.19.11.

    I have tested the code on the device and it works, but it fails in "Use Existing Build(requires build groups)" when testing in the Unity Editor. Are there any limitations for "Use Existing Build(requires build groups)" related to Sprite Localization and android? What should I do to have it work in the editor with "Use Existing Build(requires build groups)".

    Code (CSharp):
    1. public IEnumerator Initialize()
    2.     {
    3.         // Wait for the localization system to initialize
    4.         yield return LocalizationSettings.InitializationOperation;
    5.  
    6.         currentAssetTableOp = localizedAssetTable.GetTableAsync();
    7.         yield return currentAssetTableOp;
    8.         currentAssetTable = currentAssetTableOp.Result;
    9.  
    10.         foreach (SharedTableEntry sharedTableEntry in currentAssetTable.SharedData.Entries)
    11.         {
    12.             string id = sharedTableEntry.Key;
    13.             AddSpriteAssetReference(currentAssetTable.TableCollectionName, id);
    14.         }
    15.     }
    Code (CSharp):
    1. public void AddSpriteAssetReference(string tableRef, string tableEntryRef)
    2.     {
    3.         LocalizeSpriteEvent localizeSpriteEvent = gameObject.AddComponent<LocalizeSpriteEvent>();
    4.         LocalizedSprite localizedSprite = new LocalizedSprite
    5.         {
    6.             TableReference = tableRef,
    7.             TableEntryReference = tableEntryRef,
    8.         };
    9.  
    10.         localizedSprite.WaitForCompletion = false;
    11.         localizeSpriteEvent.AssetReference = localizedSprite;
    12.         localizedSpriteEvents.Add(localizeSpriteEvent);
    13.     }
    AssertionException: Assertion failure. Value was Null
    Expected: Value was not Null
    UnityEngine.Assertions.Assert.Fail (System.String message, System.String userMessage) (at <cfc1ad890650411e946cff2e6f276711>:0)
    UnityEngine.Assertions.Assert.IsNotNull (UnityEngine.Object value, System.String message) (at <cfc1ad890650411e946cff2e6f276711>:0)
    UnityEngine.Assertions.Assert.IsNotNull[T] (T value, System.String message) (at <cfc1ad890650411e946cff2e6f276711>:0)
    UnityEngine.Assertions.Assert.IsNotNull[T] (T value) (at <cfc1ad890650411e946cff2e6f276711>:0)
    UnityEngine.Localization.Tables.TableEntry.get_SharedEntry () (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Tables/DetailedLocalizationTable.cs:35)
    UnityEngine.Localization.GetTableEntryOperation`2[TTable,TEntry].HandleEntryOverride (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle`1[TObject] asyncOperation, TEntry entry) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Operations/GetTableEntryOperation.cs:87)
    UnityEngine.Localization.GetTableEntryOperation`2[TTable,TEntry].ExtractEntryFromTable (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle`1[TObject] asyncOperation) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Operations/GetTableEntryOperation.cs:64)
    UnityEngine.Localization.GetTableEntryOperation`2[TTable,TEntry].Execute () (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Operations/GetTableEntryOperation.cs:50)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].InvokeExecute () (at Library/PackageCache/com.unity.addressables@1.19.11/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:474)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Start (UnityEngine.ResourceManagement.ResourceManager rm, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency, DelegateList`1[T] updateCallbacks) (at Library/PackageCache/com.unity.addressables@1.19.11/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:469)
    UnityEngine.ResourceManagement.ResourceManager.StartOperation[TObject] (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject] operation, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency) (at Library/PackageCache/com.unity.addressables@1.19.11/Runtime/ResourceManager/ResourceManager.cs:460)
    UnityEngine.Localization.Settings.LocalizedDatabase`2[TTable,TEntry].GetTableEntryAsync (UnityEngine.Localization.Tables.TableReference tableReference, UnityEngine.Localization.Tables.TableEntryReference tableEntryReference, UnityEngine.Localization.Locale locale, UnityEngine.Localization.Settings.FallbackBehavior fallbackBehavior) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Settings/Database/LocalizedDatabase.cs:461)
    UnityEngine.Localization.Settings.LocalizedAssetDatabase.GetLocalizedAssetAsyncInternal[TObject] (UnityEngine.Localization.Tables.TableReference tableReference, UnityEngine.Localization.Tables.TableEntryReference tableEntryReference, UnityEngine.Localization.Locale locale, UnityEngine.Localization.Settings.FallbackBehavior fallbackBehavior) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Settings/Database/LocalizedAssetDatabase.cs:96)
    UnityEngine.Localization.Settings.LocalizedAssetDatabase.GetLocalizedAssetAsync[TObject] (UnityEngine.Localization.Tables.TableReference tableReference, UnityEngine.Localization.Tables.TableEntryReference tableEntryReference, UnityEngine.Localization.Locale locale, UnityEngine.Localization.Settings.FallbackBehavior fallbackBehavior) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Settings/Database/LocalizedAssetDatabase.cs:69)
    UnityEngine.Localization.LocalizedAsset`1[TObject].LoadAssetAsync () (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Localized Reference/LocalizedAsset.cs:197)
    UnityEngine.Localization.LocalizedAsset`1[TObject].HandleLocaleChange (UnityEngine.Localization.Locale _) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Localized Reference/LocalizedAsset.cs:286)
    UnityEngine.Localization.LocalizedAsset`1[TObject].ForceUpdate () (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Localized Reference/LocalizedAsset.cs:258)
    UnityEngine.Localization.LocalizedAsset`1[TObject].add_AssetChanged (UnityEngine.Localization.LocalizedAsset`1+ChangeHandler[TObject] value) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Localized Reference/LocalizedAsset.cs:149)
    UnityEngine.Localization.Components.LocalizedAssetBehaviour`2[TObject,TReference].RegisterChangeHandler () (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Component Localizers/LocalizedAssetBehaviour.cs:53)
    UnityEngine.Localization.Components.LocalizedAssetBehaviour`2[TObject,TReference].set_AssetReference (TReference value) (at Library/PackageCache/com.unity.localization@1.0.5/Runtime/Component Localizers/LocalizedAssetBehaviour.cs:38)
    LocalizationManager.AddSpriteAssetReference (System.String tableRef, System.String tableEntryRef) (at Packages/SlotEngine/Runtime/LocalizationManager.cs:131)
    LocalizationManager+<Initialize>d__12.MoveNext () (at Packages/SlotEngine/Runtime/LocalizationManager.cs:77)
    UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <cfc1ad890650411e946cff2e6f276711>:0)
     
  2. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,228
    I think it may be trying to load Android asset bundles in the Editor which is probably not supported. Could you please file a bug report? Maybe we can do something about it or at least handle the AssertionException.
     
  3. cathode26

    cathode26

    Joined:
    Jul 21, 2011
    Posts:
    27
    Sure, I will submit a bug report. Should this example code work with a windows build and "Use Existing Build(requires build groups)"?
     
    karl_jones likes this.
  4. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,228
    Yeah it looks like it should
     
  5. cathode26

    cathode26

    Joined:
    Jul 21, 2011
    Posts:
    27
    I switched the platform to PC/MAC/Linux standalone and built addressables. I got the same error with "Use Existing Build(requires build groups)" on same line.
    localizeSpriteEvent.AssetReference = localizedSprite;

    I'll put in a bug report that mentions that both platforms have been tested. Let me know if you have any suggestions.

    Thanks!
     
    karl_jones likes this.