diff --git a/editor/inspector/editor_properties.cpp b/editor/inspector/editor_properties.cpp index 643c31959fd..5e996cbea73 100644 --- a/editor/inspector/editor_properties.cpp +++ b/editor/inspector/editor_properties.cpp @@ -3577,6 +3577,8 @@ void EditorPropertyResource::update_property() { } resource_picker->set_edited_resource_no_check(res); + const Ref &real_res = get_edited_property_value(); + resource_picker->set_force_allow_unique(real_res.is_null() && res.is_valid()); } void EditorPropertyResource::collapse_all_folding() { diff --git a/editor/inspector/editor_resource_picker.cpp b/editor/inspector/editor_resource_picker.cpp index ca1c2c188d2..70008f48c7c 100644 --- a/editor/inspector/editor_resource_picker.cpp +++ b/editor/inspector/editor_resource_picker.cpp @@ -1369,6 +1369,9 @@ void EditorResourcePicker::_duplicate_selected_resources() { } bool EditorResourcePicker::_is_uniqueness_enabled(bool p_check_recursive) { + if (force_allow_unique) { + return true; + } Ref parent_resource = _has_parent_resource(); EditorNode *en = EditorNode::get_singleton(); bool internal_to_scene = en->is_resource_internal_to_scene(edited_resource); diff --git a/editor/inspector/editor_resource_picker.h b/editor/inspector/editor_resource_picker.h index a9fa90ccd63..18b5a0d921f 100644 --- a/editor/inspector/editor_resource_picker.h +++ b/editor/inspector/editor_resource_picker.h @@ -49,6 +49,7 @@ class EditorResourcePicker : public HBoxContainer { bool editable = true; bool dropping = false; + bool force_allow_unique = false; Vector inheritors_array; mutable HashSet allowed_types_without_convert; @@ -142,6 +143,7 @@ public: void set_edited_resource(Ref p_resource); void set_edited_resource_no_check(Ref p_resource); Ref get_edited_resource(); + void set_force_allow_unique(bool p_force) { force_allow_unique = p_force; } void set_toggle_mode(bool p_enable); bool is_toggle_mode() const;