Ran into an issue in no signal where
Godot was loading Vector2i values as
String values. As it turns out, this is
because Godot's JSON implementation does not round
trip correctly:
extends Node
func _ready() -> void:
var value: Vector2i = Vector2i(3,2)
var string = JSON.stringify(value)
print("String: ", string)
var parsed = JSON.parse_string(string)
print("Value: ", parsed)
print("Value is String? ", parsed is String)
print("Value is Vector2i? ", parsed is Vector2i)The above code outputs:
String: "(3, 2)"
Value: (3, 2)
Value is String? true
Value is Vector2i? false
As you can see, Godot converts the
Vector2i to a JSON string without any
type information, so it can only reasonably parse
the JSON string as a String when
parse_string is called.
Instead, I was able to get around this issue by
using var_to_str and
str_to_var instead of the
JSON API.