diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 0c8ea01a447..54ba06afd80 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -3324,6 +3324,13 @@ void EditorNode::_exit_editor(int p_exit_code) { // Dim the editor window while it's quitting to make it clearer that it's busy. dim_editor(true); + // Unload addons before quitting to allow cleanup. + for (const KeyValue &E : addon_name_to_plugin) { + print_verbose(vformat("Unloading addon: %s", E.key)); + remove_editor_plugin(E.value, false); + memdelete(E.value); + } + get_tree()->quit(p_exit_code); }