diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index bb0434a1bffd..3345f8797326 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -203,7 +203,18 @@ void EditorPropertyArray::_property_changed(const String &p_property, Variant p_ index = p_property.get_slice("/", 1).to_int(); } - Variant array = object->get_array().duplicate(); + Variant array; + const Variant &original_array = object->get_array(); + + if (original_array.get_type() == Variant::ARRAY) { + // Needed to preserve type of TypedArrays in meta pointer properties. + Array temp; + temp.assign(original_array.duplicate()); + array = temp; + } else { + array = original_array.duplicate(); + } + array.set(index, p_value); object->set_array(array); emit_changed(get_edited_property(), array, "", true);