### 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)

code += "varying vec3 uv1_power_normal;\n";
	}
	if (flags[FLAG_UV2_USE_TRIPLANAR]) {
		code += "uniform float uv2_blend_sharpness;\n";
		code += "varying vec3 uv2_power_normal;\n";
	}
	code += "uniform vec3 uv1_scale;\n";
	code += "uniform vec3 uv1_offset;\n";
	code += "uniform vec3 uv2_scale;\n";
	code += "uniform vec3 uv2_offset;\n";
	code += "\n\n";
	code += "void vertex() {\n";
	if (flags[FLAG_SRGB_VERTEX_COLOR]) {
		code += "	if (!OUTPUT_IS_SRGB) {\n";
		code += "		COLOR.rgb = mix(pow((COLOR.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), COLOR.rgb * (1.0 / 12.92), lessThan(COLOR.rgb, vec3(0.04045)));\n";
		code += "	}\n";
	}
	if (flags[FLAG_USE_POINT_SIZE]) {
		code += "	POINT_SIZE=point_size;\n";
	}
	if (shading_mode == SHADING_MODE_PER_VERTEX) {
		code += "	ROUGHNESS=roughness;\n";
	}
	if (!flags[FLAG_UV1_USE_TRIPLANAR]) {
		code += "	UV=UV*uv1_scale.xy+uv1_offset.xy;\n";
	}
	switch (billboard_mode) {
		case BILLBOARD_DISABLED: {
		} break;
		case BILLBOARD_ENABLED: {