I first built physical prototypes for each level out of Legos. This made it very easy for me to quickly prototype and test the levels to see if players understood the puzzles without needing to build it all in Unity. I was then able to easily tweak and update them based on feedback.
Next, I created the finalized plans using Paint.net to get an overall idea of the layouts and how to solve the puzzles. I later used these as part of the final Design Documents.
Finally, I built the full levels in Unity, scripting new mechanics as I needed them. I ether drew the assets for the gameobjects myself or found images online that represented them.