Двоеточие задаёт тип переменной. Если тип не указан, Godot попытается его вывести автоматически из выражения:
var a := 5
# То же самое, что и
var a: int = 5
Заменить значение переменной на другой тип будет нельзя:
a = "я не int"
# Parse Error: Value of type "String" cannot be assigned to a variable of type "int".
Если двоеточие не указывать, то переменная получает тип Variant, что по сути означает, что значение может быть любого типа:
var a = 5
# То же самое, что и
var a: Variant = 5
a = "я не int, но я тоже Variant" # Работает
Если значение является результатом вызова функции, то тип может быть выведен из возвращаемого значения, но только если в функции указан его тип:
func untyped():
return 5
var a1 := untyped() # Не работает
var a2: Variant = untyped() # Работает
func typed() -> int:
return 5
var a3 := typed() # Работает (тип int)
var a4 = typed() # Работает (тип Variant, потому что двоеточия нет)
func typed_variant() -> Variant:
return 5
var a5 := typed_variant() # Работает (тип Variant), но пишет предупреждение
var a6: Variant = typed_variant() # Работает без предупреждений
Подробнее о статической типизации в документации: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/static_typing.html