diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index 752585c73cf9..5d7457fb149e 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -517,16 +517,41 @@ String ConnectDialog::get_signature(const MethodInfo &p_method, PackedStringArra } const PropertyInfo &pi = p_method.arguments[i]; - String tname = "var"; - if (pi.type == Variant::OBJECT && pi.class_name != StringName()) { - tname = pi.class_name.operator String(); - } else if (pi.type != Variant::NIL) { - tname = Variant::get_type_name(pi.type); + String type_name; + switch (pi.type) { + case Variant::NIL: + type_name = "Variant"; + break; + case Variant::INT: + if ((pi.usage & PROPERTY_USAGE_CLASS_IS_ENUM) && pi.class_name != StringName() && !String(pi.class_name).begins_with("res://")) { + type_name = pi.class_name; + } else { + type_name = "int"; + } + break; + case Variant::ARRAY: + if (pi.hint == PROPERTY_HINT_ARRAY_TYPE && !pi.hint_string.is_empty() && !pi.hint_string.begins_with("res://")) { + type_name = "Array[" + pi.hint_string + "]"; + } else { + type_name = "Array"; + } + break; + case Variant::OBJECT: + if (pi.class_name != StringName()) { + type_name = pi.class_name; + } else { + type_name = "Object"; + } + break; + default: + type_name = Variant::get_type_name(pi.type); + break; } - signature.append((pi.name.is_empty() ? String("arg " + itos(i)) : pi.name) + ": " + tname); + String arg_name = pi.name.is_empty() ? "arg" + itos(i) : pi.name; + signature.append(arg_name + ": " + type_name); if (r_arg_names) { - r_arg_names->push_back(pi.name + ":" + tname); + r_arg_names->push_back(arg_name + ":" + type_name); } } diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp index 5e626f05204e..aec8f5651631 100644 --- a/modules/gdscript/gdscript_editor.cpp +++ b/modules/gdscript/gdscript_editor.cpp @@ -500,7 +500,7 @@ String GDScriptLanguage::make_function(const String &p_class, const String &p_na s += p_args[i].get_slice(":", 0); if (th) { String type = p_args[i].get_slice(":", 1); - if (!type.is_empty() && type != "var") { + if (!type.is_empty()) { s += ": " + type; } } diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp index 9e23a2709388..b41f2155f8d5 100644 --- a/modules/mono/csharp_script.cpp +++ b/modules/mono/csharp_script.cpp @@ -435,6 +435,11 @@ static String variant_type_to_managed_name(const String &p_var_type_name) { return "Collections.Dictionary"; } + if (p_var_type_name.begins_with(Variant::get_type_name(Variant::ARRAY) + "[")) { + String element_type = p_var_type_name.trim_prefix(Variant::get_type_name(Variant::ARRAY) + "[").trim_suffix("]"); + return "Collections.Array<" + variant_type_to_managed_name(element_type) + ">"; + } + if (p_var_type_name == Variant::get_type_name(Variant::ARRAY)) { return "Collections.Array"; }