Any reason why you want it to be doodads?
Or you load the walls dynamically on runtime when there are units nearby that could be affected.
If you want a performant solution, use cliffs (also works if you turn your cliffs into ramps).
I use this^ method and cover the cliffs with doodads to make walls etc. If I cannot use cliffs then I just use custom pathing blockers and increase the occlusion height. You can make pathing blockers that are 4x12 or 12x4 or 8x4 or 8x2 etc. Just mess around with the pathing map field in the editor. This way you don't actually have to create your own.