Hey @Justin
Another fix we wanted to contribute. We've been implementing lazy loading of character models using Addressables (we're on UCC v3). At first we tried to use the CharacterInitializer which did work but unfortunately in combination with the PUN add-on it lead to some pretty sticky bugs that were hard to fix.
The easiest implementation seems to be that we start with a Dummy model child object in the player prefab (that simply has an AnimatorMonitor and a disabled Animator component) and then when the real character model is loaded via Addressables, it switches the model and fires the OnCharacterSwitchModels event (not using ModelManager).
However, there is an edge case where its possible that the parent player prefab could have been destroyed just before Addressables finishes loading the character model. There isn't any way to prevent these Awake() calls from firing before we can delete the loaded model so we added in these null checks.
Just sharing the diff in case you want to add it too? If you think our approach is relatively clean, I'd be happy to share a short step-by-step on how we achieved lazy loaded character models in case you want to add it to the docs for others to benefit from?
Another fix we wanted to contribute. We've been implementing lazy loading of character models using Addressables (we're on UCC v3). At first we tried to use the CharacterInitializer which did work but unfortunately in combination with the PUN add-on it lead to some pretty sticky bugs that were hard to fix.
The easiest implementation seems to be that we start with a Dummy model child object in the player prefab (that simply has an AnimatorMonitor and a disabled Animator component) and then when the real character model is loaded via Addressables, it switches the model and fires the OnCharacterSwitchModels event (not using ModelManager).
However, there is an edge case where its possible that the parent player prefab could have been destroyed just before Addressables finishes loading the character model. There isn't any way to prevent these Awake() calls from firing before we can delete the loaded model so we added in these null checks.
Just sharing the diff in case you want to add it too? If you think our approach is relatively clean, I'd be happy to share a short step-by-step on how we achieved lazy loaded character models in case you want to add it to the docs for others to benefit from?