self_destruction.gd 764 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # https://github.com/godotengine/godot/issues/75658
  2. class MyObj:
  3. var callable: Callable
  4. func run():
  5. callable.call()
  6. var prop:
  7. set(value):
  8. callable.call()
  9. get:
  10. callable.call()
  11. return 0
  12. func _on_some_signal():
  13. callable.call()
  14. func _init(p_callable: Callable):
  15. self.callable = p_callable
  16. signal some_signal
  17. var obj: MyObj
  18. func test():
  19. # Call.
  20. obj = MyObj.new(nullify_obj)
  21. obj.run()
  22. print(obj)
  23. # Get.
  24. obj = MyObj.new(nullify_obj)
  25. var _aux = obj.prop
  26. print(obj)
  27. # Set.
  28. obj = MyObj.new(nullify_obj)
  29. obj.prop = 1
  30. print(obj)
  31. # Signal handling.
  32. obj = MyObj.new(nullify_obj)
  33. @warning_ignore("return_value_discarded")
  34. some_signal.connect(obj._on_some_signal)
  35. some_signal.emit()
  36. print(obj)
  37. func nullify_obj():
  38. obj = null