I’m just adding my experience with the localization pacakge, I get that it is still in development so this is just a bit of feedback.
I’ve successfully implemented localization however I’m going to have to remove it as it takes too long to load when the game boots. I implemented a splash screen to hide this (after the Unity splash) but it takes 15 seconds to get past the splash. Usually it would take 5 seconds to load into the main menu.
Initially I thought this had something to do with the font, so I baked the fonts and set them to static. There was no difference to the loading time. If I just remove the localization package it boots within an acceptable time.
I’ve also found that the localization will freeze all other operations until it’s done loading. Are you working on any optimisations to speed up the loading or to prevent locking-up code execution? I feel what is happening is that localization is loading all of the asset/string tables at once. Is there an option to only load the needed asset/string tables for the particular scene that is being loaded?
The strings/assets I’m using are pretty standard UI stuff, there is no long lists of dialog or anything like that.
Are you using preloading?
Do you use wait for completion or initialize synchronously?
15 secs is a long time, I have not seen anything like this. What platform is it running on?
If preloading is not set then all it should be loading is the locales and there should be no locking up.
I’ve made multiple builds to test this out. Preloading and not preloading, initialize synchronously enabled and disabled. None of which seem to make much of a difference. I don’t use WaitForCompletetion I was using GetTableAsync and waiting for that instead (just for the MainMenu assets/strings). Just to be clear, the MainMenu takes 5 seconds to load, the extra 10 is from localization.
I’m building out to Android and initially I had implemented a simple circle loading ring that was running on update. That locked up when loading the MainMenu (so I switched to a loading bar instead). This is most obvious in the Android build, in the Editor it just blows through the loading screen.
The ‘locking-up’ doesn’t happen on a physical Android device for you? I usually test on pretty old devices (about 5 years old).
P.S. As an aside I just noticed something, I went to duplicate a button (which has the Game Object Localizer on it’s text component) and if I try to change the text, it will also change the text of the duplicate. That’s a bit odd, right?
The loading issues will be due to loading asset bundles through Addressables. You can usually reduce this time by using uncompressed asset bundles
If it’s a duplicate then it will be the same as the original including its localization. You can just remove the Game Object Localizer to clear it. If you then modify it again it will add a new one.
I gave the uncompressed bundles a shot, unfortunately no difference in the loading time.
I don’t think the duplicate should be able to update any other game object. If I was making a prefab, sure I expect that behaviour but not with a duplicate. I get why it’s doing that but shouldn’t the component dump any connection to the original on duplication?
If it doesn’t do that, then I can’t duplicate an existing UI button without having to go in and disconnect the game object localizer manually.
If I duplicate an image and change it’s colour I don’t expect the duplicate to change, but if I make a prefab from it then I would expect the colour to change. It’s kinda breaks convention that a duplicate of game object localizer has the behaviour of a prefab.
Yep, it acts like a reference. I’m currently in the middle of a crunch but I’ll put together a small project to submit a bug report. I’ve a few other things to catch up on first. Thanks for your time!