export_variable.gd 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. @tool
  2. class_name ExportVariableTest
  3. extends Node
  4. const PreloadedGlobalClass = preload("./export_variable_global.notest.gd")
  5. const PreloadedUnnamedClass = preload("./export_variable_unnamed.notest.gd")
  6. # Built-in types.
  7. @export var test_weak_int = 1
  8. @export var test_hard_int: int = 2
  9. @export_range(0, 100) var test_range = 100
  10. @export_range(0, 100, 1) var test_range_step = 101
  11. @export_range(0, 100, 1, "or_greater") var test_range_step_or_greater = 102
  12. @export var test_color: Color
  13. @export_color_no_alpha var test_color_no_alpha: Color
  14. @export_node_path("Sprite2D", "Sprite3D", "Control", "Node") var test_node_path := ^"hello"
  15. # Enums.
  16. @export var test_side: Side
  17. @export var test_atm: AutoTranslateMode
  18. # Resources and nodes.
  19. @export var test_image: Image
  20. @export var test_timer: Timer
  21. # Global custom classes.
  22. @export var test_global_class: ExportVariableTest
  23. @export var test_preloaded_global_class: PreloadedGlobalClass
  24. @export var test_preloaded_unnamed_class: PreloadedUnnamedClass # GH-93168
  25. # Arrays.
  26. @export var test_array: Array
  27. @export var test_array_bool: Array[bool]
  28. @export var test_array_array: Array[Array]
  29. @export var test_array_side: Array[Side]
  30. @export var test_array_atm: Array[AutoTranslateMode]
  31. @export var test_array_image: Array[Image]
  32. @export var test_array_timer: Array[Timer]
  33. # `@export_storage`.
  34. @export_storage var test_storage_untyped
  35. @export_storage var test_storage_weak_int = 3 # Property info still `Variant`, unlike `@export`.
  36. @export_storage var test_storage_hard_int: int = 4
  37. # `@export_custom`.
  38. # NOTE: `PROPERTY_USAGE_NIL_IS_VARIANT` flag will be removed.
  39. @export_custom(PROPERTY_HINT_ENUM, "A,B,C") var test_export_custom_untyped
  40. @export_custom(PROPERTY_HINT_ENUM, "A,B,C") var test_export_custom_weak_int = 5
  41. @export_custom(PROPERTY_HINT_ENUM, "A,B,C") var test_export_custom_hard_int: int = 6
  42. # `@export_tool_button`.
  43. @export_tool_button("Click me!") var test_tool_button_1: Callable
  44. @export_tool_button("Click me!", "ColorRect") var test_tool_button_2: Callable
  45. func test():
  46. for property in get_property_list():
  47. if str(property.name).begins_with("test_"):
  48. Utils.print_property_extended_info(property, self)