### Godot version

v4.1.dev.custom_build.a7276f1ce

### System information

Win10, AMD 2600, GeForce GTX 1060, Vulkan API 1.3.205

### Issue description

I can't get correct color data from an array of source_color type.
The color data is saved as **Color** in the file:
`shader_parameter/palette = [Color (1, 0, 0, 1), Color (0, 1, 0, 1), Color (0, 0, 1, 1)]`
Shouldn't it be saved as PackedColorArray?


### Steps to reproduce

1.Declare an array of source_color type.
2.Set colors.

### Minimal reproduction project

[shadertest.zip](https://github.com/godotengine/godot/files/11246504/shadertest.zip)

GlobalShaderUniforms::Variable *gv = material_storage->global_shader_uniforms.variables.getptr(E.key);
			uint32_t index = 0;
			if (gv) {
				index = gv->buffer_index;
			} else {
				WARN_PRINT("Shader uses global parameter '" + E.key + "', but it was removed at some point. Material will not display correctly.");
			}
			uint32_t offset = p_uniform_offsets[E.value.order];
			uint32_t *intptr = (uint32_t *)&p_buffer[offset];
			*intptr = index;
			uses_global_buffer = true;
			continue;
		}
		
		uint32_t offset = p_uniform_offsets[E.value.order];
#ifdef DEBUG_ENABLED
		uint32_t size = 0U;
		
		if (E.value.array_size > 0) {
			size = ShaderLanguage::get_datatype_size(E.value.type) * E.value.array_size;
			int m = (16 * E.value.array_size);
			if ((size % m) != 0U) {
				size += m - (size % m);
			}
		} else {
			size = ShaderLanguage::get_datatype_size(E.value.type);
		}
		ERR_CONTINUE(offset + size > p_buffer_size);
#endif