What is the difference between GetWorld() and GEngine->GetWorldContexts()[0].World() ?

You may end up generating and using multiple worlds in PIE, esp testing multiplayer… this may be causing issues.

It looks like GEngine->GetWorldContexts()[0].World() is generally used in UObjects or struct functions where the Outer (parent) isn’t available as it is in Levels, Actors, components, etc. You probably want to avoid this function if you can. You can see in the codebase that they use the GWorld global variable when WITH_EDITOR to possibly get around the issue you point out. Keep in mind the comments for GWorld warns: “Use of this pointer should be avoided whenever possible.”.