tutorials/best_practices/godot_notifications #264
Replies: 2 comments 7 replies
-
There's a gotcha with object initialization. When setting Resource types in the inspector, and leaving all its @exported Variant data members (for example) at default values, the default values will overwrite values set in its _init() function as if they were set via the inspector. Example below: class_name MyResource extends Resource
@export var my_int: int = -1
func _init() -> void:
if my_int < 0: my_int = 2
class_name MyNode extends Node
@export var my_resource := MyResource.new() If my_resource is set in the inspector, MyResource.my_int will be -1. If my_resource isn't set via inspector, it will be 2. |
Beta Was this translation helpful? Give feedback.
-
I'm debugging some notifications in Godot 4.3. Here's a helper method if anybody else needs it. Note the numbers at the bottom I couldn't find macros for, but I found in the engine source code and may be subject to change. I don't think my list is comprehensive but it's a good start: func get_notification_name(what: int) -> String:
match what:
NOTIFICATION_POSTINITIALIZE: return "NOTIFICATION_POSTINITIALIZE"
NOTIFICATION_PREDELETE: return "NOTIFICATION_PREDELETE"
NOTIFICATION_ENTER_TREE: return "NOTIFICATION_ENTER_TREE"
NOTIFICATION_EXIT_TREE: return "NOTIFICATION_EXIT_TREE"
NOTIFICATION_READY: return "NOTIFICATION_READY"
NOTIFICATION_PARENTED: return "NOTIFICATION_PARENTED"
NOTIFICATION_UNPARENTED: return "NOTIFICATION_UNPARENTED"
NOTIFICATION_PAUSED: return "NOTIFICATION_PAUSED"
NOTIFICATION_UNPAUSED: return "NOTIFICATION_UNPAUSED"
NOTIFICATION_PHYSICS_PROCESS: return "NOTIFICATION_PHYSICS_PROCESS"
NOTIFICATION_PROCESS: return "NOTIFICATION_PROCESS"
NOTIFICATION_INTERNAL_PROCESS: return "NOTIFICATION_INTERNAL_PROCESS"
NOTIFICATION_INTERNAL_PHYSICS_PROCESS: return "NOTIFICATION_INTERNAL_PHYSICS_PROCESS"
NOTIFICATION_POST_ENTER_TREE: return "NOTIFICATION_POST_ENTER_TREE"
NOTIFICATION_DRAG_BEGIN: return "NOTIFICATION_DRAG_BEGIN"
NOTIFICATION_DRAG_END: return "NOTIFICATION_DRAG_END"
NOTIFICATION_PATH_RENAMED: return "NOTIFICATION_PATH_RENAMED"
NOTIFICATION_TRANSLATION_CHANGED: return "NOTIFICATION_TRANSLATION_CHANGED"
NOTIFICATION_EDITOR_PRE_SAVE: return "NOTIFICATION_EDITOR_PRE_SAVE"
NOTIFICATION_MOVED_IN_PARENT: return "NOTIFICATION_MOVED_IN_PARENT"
NOTIFICATION_ENABLED: return "NOTIFICATION_ENABLED"
NOTIFICATION_DISABLED: return "NOTIFICATION_DISABLED"
NOTIFICATION_SCENE_INSTANTIATED: return "NOTIFICATION_SCENE_INSTANTIATED"
NOTIFICATION_WM_MOUSE_ENTER: return "NOTIFICATION_WM_MOUSE_ENTER"
NOTIFICATION_WM_MOUSE_EXIT: return "NOTIFICATION_WM_MOUSE_EXIT"
NOTIFICATION_WM_WINDOW_FOCUS_IN: return "NOTIFICATION_WM_WINDOW_FOCUS_IN"
NOTIFICATION_WM_WINDOW_FOCUS_OUT: return "NOTIFICATION_WM_WINDOW_FOCUS_OUT"
NOTIFICATION_WM_CLOSE_REQUEST: return "NOTIFICATION_WM_CLOSE_REQUEST"
NOTIFICATION_WM_GO_BACK_REQUEST: return "NOTIFICATION_WM_GO_BACK_REQUEST"
NOTIFICATION_WM_SIZE_CHANGED: return "NOTIFICATION_WM_SIZE_CHANGED"
NOTIFICATION_WM_DPI_CHANGE: return "NOTIFICATION_WM_DPI_CHANGE"
NOTIFICATION_VP_MOUSE_ENTER: return "NOTIFICATION_VP_MOUSE_ENTER"
NOTIFICATION_VP_MOUSE_EXIT: return "NOTIFICATION_VP_MOUSE_EXIT"
NOTIFICATION_OS_MEMORY_WARNING: return "NOTIFICATION_OS_MEMORY_WARNING"
NOTIFICATION_WM_ABOUT: return "NOTIFICATION_WM_ABOUT"
NOTIFICATION_CRASH: return "NOTIFICATION_CRASH"
NOTIFICATION_OS_IME_UPDATE: return "NOTIFICATION_OS_IME_UPDATE"
NOTIFICATION_APPLICATION_RESUMED: return "NOTIFICATION_APPLICATION_RESUMED"
NOTIFICATION_APPLICATION_PAUSED: return "NOTIFICATION_APPLICATION_PAUSED"
NOTIFICATION_APPLICATION_FOCUS_IN: return "NOTIFICATION_APPLICATION_FOCUS_IN"
NOTIFICATION_APPLICATION_FOCUS_OUT: return "NOTIFICATION_APPLICATION_FOCUS_OUT"
NOTIFICATION_TEXT_SERVER_CHANGED: return "NOTIFICATION_TEXT_SERVER_CHANGED"
NOTIFICATION_EDITOR_PRE_SAVE: return "NOTIFICATION_EDITOR_PRE_SAVE"
NOTIFICATION_EDITOR_POST_SAVE: return "NOTIFICATION_EDITOR_POST_SAVE"
3: return "NOTIFICATION_PREDELETE_CLEANUP"
30: return "NOTIFICATION_DRAW"
31: return "NOTIFICATION_VISIBILITY_CHANGED"
32: return "NOTIFICATION_ENTER_CANVAS"
33: return "NOTIFICATION_EXIT_CANVAS"
35: return "NOTIFICATION_LOCAL_TRANSFORM_CHANGED"
36: return "NOTIFICATION_WORLD_2D_CHANGED"
41: return "NOTIFICATION_ENTER_WORLD"
42: return "NOTIFICATION_EXIT_WORLD"
43: return "NOTIFICATION_VISIBILITY_CHANGED"
44: return "NOTIFICATION_LOCAL_TRANSFORM_CHANGED"
50: return "NOTIFICATION_BECAME_CURRENT"
51: return "NOTIFICATION_LOST_CURRENT"
10000: return "NOTIFICATION_EDITOR_SETTINGS_CHANGED"
_: return "Unknown Notification (%d)" % what |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
tutorials/best_practices/godot_notifications
Every Object in Godot implements a_notification method. Its purpose is to allow the Object to respond to a variety of engine-level callbacks that may relate to it. For example, if the engine tells ...
https://docs.godotengine.org/en/stable/tutorials/best_practices/godot_notifications.html
Beta Was this translation helpful? Give feedback.
All reactions