diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 3178bab6d95..3a011c5f4ae 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -646,10 +646,40 @@ void InspectorDock::apply_script_properties(Object *p_object) { return; } + List properties; + si->get_property_list(&properties); + for (const Pair &E : stored_properties) { Variant current_prop; if (si->get(E.first, current_prop) && current_prop.get_type() == E.second.get_type()) { si->set(E.first, E.second); + } else if (E.second.get_type() == Variant::OBJECT) { + for (const PropertyInfo &pi : properties) { + if (E.first != pi.name) { + continue; + } + + if (pi.type != Variant::OBJECT) { + break; + } + + Object *p_property_object = E.second; + + if (p_property_object->is_class(pi.hint_string)) { + si->set(E.first, E.second); + break; + } + + Ref