Релевантные внешние источники:
- [EditorApplication Events](https://docs.unity3d.com/ScriptReference/EditorApplication.html#:~:text=of%20the%20title.-,Events,-focusChanged)
Релевантные конспекты:
- [[Разница между Update в EditorWindow и EditorApplication.update]]
[[Какие есть разновидности Unity Callback Events]]
[[Как выполнить действия без провоцирования событий (Unity Callback Events)]]
[[Как подписаться и отписаться на события Unity Callback Events]]
### Сравнение `C# Events` и `Unity Callback Events`
Принцип работы Unity Callback Events и C# Events схож: В обоих случаях используется механизм делегатов для вызова всех подписанных обработчиков. Однако, когда метод подписан на Unity Callback Event, то метод (обработчик) выполнится не сразу в момент возникновения события, а чуть позже. Когда я проводил небольшой ресерч, то у меня обработчик вызывался только после завершения работы другого метода, в котором был "спущен крючок" на генерацию события. Я проверял на `Selection.selectionChanged`.
> К слову, ChatGPT-4o наврал мне, написав что:
> Метод `OnSelectionChanged` в Unity вызывается **сразу** после изменения выделения в редакторе. Это событие срабатывает синхронно, как только изменяется свойство `Selection.activeObject`, `Selection.objects`, или любое другое связанное с выделением свойство.
### Примеры таких событий в Unity
- `Selection.selectionChanged` — событие, которое вызывается при изменении выделения объектов.
- `EditorApplication.update` — вызывается каждый кадр в редакторе.
- `Undo.undoRedoPerformed` — срабатывает при отмене или повторе действий.