I have a workaround in mind for this already, but I just wanted to see if anyone else here could think of a more elegant solution. Any participation is welcome.
Requirements:
1) Be a single global variable property shared by any level that is loaded.
2) Be a property, meaning that it both can be seen from and edited from the editor GUI.
My current workaround:
1) Give an Autoload object/script the global version of the variable you plan to expose via property.
2) Have each level hold a local exposed property counterpart of the global version of the variable.
a) Via Signals (I hope), whenever a level is loaded, assign the Autoload's (effectively) global variable to the level's local exposed property.
aa) levels_exposed_property = autoload_global
b) Via Signals, update the global variable whenever any associated (level node script) property is updated manually by the editor user.
aa) autoload_global = levels_exposed_property
Is my workaround the most elegant approach for this goal? Or is there a more straightforward workflow I missed?
Note: As far as I am aware, the only way to tie a variable's lifetime to the game application is to store it inside an Autoload instance, and that Autoload variables cannot be exposed to the editor via the property @export macro.