I've started working on my tower defense game a month ago. Yesterday, I've finished creating the infrastructure. That's one month of work (minus my week of time waste in the beginning with my external engine, and a small family illness and some days... well, OK. All in all let's say two weeks).
What have I learned so far? Well, this is the first time I am working with Unity, and aside of learning how to use Unity, here is what I know now:
2. Unity supports two mechanisms for GUI: First - the GuiTexture and GuiText objects, with which you can build your GUI by creating and dragging objects. Second - the GUILayout and GUI classes, in which you create your GUI with code. After a lot of hair pulling and frustration, I've reached the conclusion that the second method is much much better. It is more accurate, more trustworthy, and basically makes more sense.
3. I should think well and hard before I embark on creating an external engine. The questions "why?" and "why not?" should be foremost in my thoughts.
4. I have amazing graphic skills. I know how to download images from Google, and re-size them using uh... paint. Yup, the paint that comes with Windows. When I try to create them myself they look cute. Like the paintings my 4 year old son brings home from kindergarten.
Now all I have to do is create the actual game play. That means about 15 game levels, about 10-20 different enemies, at least 4 upgradable towers, some achievements, some skills, some special abilities. In short - back to the drawing board!