Search Unity

Bug LocalizedString Can't use it in properties? OperationException : Expected to have a current operat

Discussion in 'Localization Tools' started by a33366, May 19, 2023.

  1. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    • My English is not good. Sorry
    • Here is my code
    Code (CSharp):
    1.        
    2. public string Name //Here is my code
    3. {
    4.             get
    5.             {
    6.                  localizedString = new LocalizedString("UITable", "入厕_k");
    7.                 var name = localizedString.GetLocalizedString();
    8.                 return "Temp";
    9.             }
    10. }
    The editor is fine but there is an error after packaging the window
    OperationException : Expected to have a current operation to wait on. Can not complete.
    My version number is 1.43
     
  2. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    more detail
    WindowsPlayer "XiaoFanCom" OperationException : Expected to have a current operation to wait on. Can not complete.
    UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    UnityEngine.Logger:Log(LogType, Object)
    UnityEngine.Debug:LogError(Object)
    UnityEngine.AddressableAssets.AddressablesImpl:LogException(AsyncOperationHandle, Exception) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\AddressablesImpl.cs:219)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:set_OperationException(Exception) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationBase.cs:348)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(Object, Boolean, Exception, Boolean) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationBase.cs:488)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(Object, Boolean, String, Boolean) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationBase.cs:451)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:Complete(Object, Boolean, String) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationBase.cs:435)
    UnityEngine.Localization.Operations.WaitForCurrentOperationAsyncOperationBase`1:InvokeWaitForCompletion() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Operations\WaitForCurrentOperationAsyncOperationBase.cs:40)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1:WaitForCompletion() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationBase.cs:172)
    UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle`1:WaitForCompletion() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.addressables@1.20.5\Runtime\ResourceManager\AsyncOperations\AsyncOperationHandle.cs:199)
    UnityEngine.Localization.Settings.LocalizationSettings:GetInitializationOperation() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\LocalizationSettings.cs:313)
    UnityEngine.Localization.Settings.LocalizationSettings:get_InitializationOperation() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\LocalizationSettings.cs:123)
    UnityEngine.Localization.Settings.LocalizedDatabase`2:GetTableAsync(TableReference, Locale) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\Database\LocalizedDatabase.cs:377)
    UnityEngine.Localization.Settings.LocalizedDatabase`2:GetTableEntryAsync(TableReference, TableEntryReference, Locale, FallbackBehavior) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\Database\LocalizedDatabase.cs:670)
    UnityEngine.Localization.Settings.LocalizedStringDatabase:GetLocalizedStringAsyncInternal(TableReference, TableEntryReference, IList`1, Locale, FallbackBehavior, IVariableGroup, Boolean) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\Database\LocalizedStringDatabase.cs:259)
    UnityEngine.Localization.Settings.LocalizedStringDatabase:GetLocalizedStringAsync(TableReference, TableEntryReference, IList`1, Locale, FallbackBehavior, IVariableGroup) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Settings\Database\LocalizedStringDatabase.cs:254)
    UnityEngine.Localization.LocalizedString:GetLocalizedStringAsync(IList`1) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Localized Reference\LocalizedString.cs:311)
    UnityEngine.Localization.LocalizedString:GetLocalizedStringAsync() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Localized Reference\LocalizedString.cs:263)
    UnityEngine.Localization.LocalizedString:GetLocalizedString() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Library\PackageCache\com.unity.localization@1.4.3\Runtime\Localized Reference\LocalizedString.cs:273)
    State:get_Name() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\Creators\MovementUnit\Customer.cs:566)
    UIDogState:Show(Customer, Action, Single) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Modules\UI\Scripts\UIDogState.cs:108)
    <>c__DisplayClass16_0`1:<ShowUI>b__0(UIBase) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\UIManager.cs:231)
    <>c__DisplayClass19_0:<CreateUI>b__0(UIBase) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\UIManager.cs:319)
    ResourcesLoading_Resources`1:LoadAssetAsync(String, Action`1, LoadOption) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\ResourcesManager\ResourcesLoad\ResourcesLoading_Resources.cs:51)
    LoaderManger:LoadResourcesAsset(String, Action`1, LoadOption) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\LoaderManger.cs:152)
    UIManager:CreateUI(UITypeList, Action`1) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\UIManager.cs:315)
    UIManager:ShowUI(UITypeList, Customer, Action, Action) (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\GameManager\UIManager.cs:274)
    Customer:OpenStateUI() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\Creators\MovementUnit\Customer.cs:311)
    Customer:OnSelect() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\Creators\MovementUnit\Customer.cs:304)
    Customer:<Initialization>b__86_0() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\Creators\MovementUnit\Customer.cs:408)
    UnityEngine.Events.InvokableCall:Invoke() (at C:\buildslave\unity\build\Runtime\Export\UnityEvent\UnityEvent.cs:178)
    UnityEngine.Events.UnityEvent:Invoke() (at C:\buildslave\unity\build\artifacts\generated\UnityEvent\UnityEvent_0.cs:57)
    TouchEventHndler:OnMouseDown() (at D:\UnityProject\Camping_Game\Program\Main\Camping_Game\Assets\Scripts\Common\Misc\TouchEventHndler.cs:101)
    UnityEngine.HitInfo:SendMessage(String) (at C:\buildslave\unity\build\Modules\InputLegacy\MouseEvents.cs:18)
    UnityEngine.SendMouseEvents:SendEvents(Int32, HitInfo) (at C:\buildslave\unity\build\Modules\InputLegacy\MouseEvents.cs:188)
    UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32) (at C:\buildslave\unity\build\Modules\InputLegacy\MouseEvents.cs:168)
     

    Attached Files:

    Last edited: May 19, 2023
  3. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    What is at line 560 of Customer.cs?
    And Loading_Resources.cs line 50?
     
  4. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    Thank you for your reply. line 560 just use GetLocalizedString

    • I think this might have something to do with WaitForCompletion
     
  5. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    I enabled
    Preload AII TabIes
    Preload Table
    lnitialize SynchronousIy
     
  6. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    Are you calling WaitForCompletion? Can you share the project? I think there is more going on here than a call to GetLocalizedString.
     
  7. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    I mean GetLocalizedString calling WaitForCompletion Look at the call to GetLocalizedString
    public string GetLocalizedString() => GetLocalizedStringAsync().WaitForCompletion();
    My project doesn't call any Localization Tools apis other than LocalizedString. Would you like to see the details of my setup?
     
  8. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
  9. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    There is this error in StandaloneWindows64 (just only After build)i upload Editor.txt and Player.txt file I don't know if it helps
     

    Attached Files:

  10. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    Hello I created a demo Scene Build MyScene Scene target Platform is windows 64 to reproduce this bug
     

    Attached Files:

  11. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    Thanks, I have been able to reproduce the issue. It appears to have something to do with using WaitForCompletion at the start, switching to GetLocalizedStringAsync fixed the issue for me. I will need to spend more time investigating it to fully understand what's going wrong.
    I have created a bug report so you can track the progress https://issuetracker.unity3d.com/product/unity/issues/guid/LOC-929
     
  12. a33366

    a33366

    Joined:
    Jul 26, 2017
    Posts:
    26
    I've been testing it for a few days and there are some details you can refer to (I use translation software May not be accurate)
    1. upload_2023-5-22_19-43-41.png ->Play Mode Script -> upload_2023-5-22_19-44-6.png -> This allows you to reproduce the bug in the editor
    2. It doesn't seem to have anything to do with AT START and it can be repeated anywhere
    3. Listening LocalizedString.StringChanged events will also be an error
    4. using LocalizeStringEvent not error
     

    Attached Files:

    karl_jones likes this.
  13. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    Hi,
    I have found the issue. Our Initialization operations dependency is not correctly configured which is causing an infinite loop when running before Addressables has initialized. Ill get a fix in the next release.
    For now you should be able to solve this by calling
    Addressables.InitializeAsync().WaitForCompletion();
    before making any calls to localization.
     
    Last edited: May 24, 2023
    lilacsky824 likes this.