A prefab object only instantiates itself?

EDIT: Ignore the thread title please, I didnt express myself well. My question is:
A prefab instance that instantiates itself makes an exact copy of the mesh?

Hi, I noticed If a prefab object instantiates its own prefab, then the newly created instance will have the changes done in the mesh.

If a different object instantiates the prefab, the newly created instance will have the original mesh… and that’s how I want it to work! Except I’d need another object to do the prefab instancing.

Is there a way for the prefab object in the scene to instantiate the same prefab it came from, but with the original mesh? Without giving the new instance the modified mesh, as it would when I instantiate it from a different object?

Of course I could have a separated object that takes care of instancing the prefab, because then it would work correctly.But I just don’t understand, why the Instantiate function works in a different manner when it instantiates its own prefab, and does something else when its instancing other prefabs?

And why self instantiated prefabs only pass the modified mesh to the new instance? all other values remain the same as original prefab.

Another solution would be to somehow make the instance unique, is there a way to do that? I mean unity knows when an object is a prefab and when its unique, if I could stop a prefab instance from being a copy of the prefab, and be just a regular gameObject, then it would solve my problem!

This is a known bug/feature. (Officially it’s expected behavior, but it’s always seemed like a bug to me.)

Short answer: ‘Recursive’ instantiations (like what you’re talking about) don’t work as most people (IMO) would expect them to. The workaround I’ve used is to have two prefabs, and have prefab A instantiate new objects from prefab B and vice versa. It’s a workaround, but it solves the problem.