Notify a script that a transform has changed its parent

So I have a script that, when i put in on an object, it changes the materials of all the children of that object (inlcuding children of children).

I may have this structure:

root object with the script

— level 1 child

— level 1 child

------ level 2 child

------ level 2 child

--------- level 3 child

All the materials of these direct children and deep children will be changed.

The thing is that I want an event to know when let’s say a child from level 2 or level 3 is removed from this mini-hierarchy, so that I change the materials back to what they were before.

I know that OnTransformParentChanged() is called when a gameobject’s parent changed, but I cannot use this function, as I do not want to attach a script to all these children. I want to have only the script on my root object.

There is also OnTransformChildrenChanged() that I can overwrite in the script of the root object, but this gets called only when a level 1 child changed its parent.

How would you guys do this? I would like some sort of an event that works like OnTransformChildrenChanged() that also works with deep children, but please tell me if you have another solution. (PS, I would like to not use Update to constantly check)