Well Unity is not bad for learning ,
What i would do would be somthing like this .
- Learn Unity make a couple of small 3D games.
- Learn some basic OpenGL , learn to write your own shaders and understand how it all works.
- After Unity try working with other engines ( work with something like the CryEngine[1] , it costs like 9.90$ / month royalty free)
- As you make games start making your own game engine as a side project.
ProTip: Open Source it to speed up development.
[1]http://cryengine.com/news/crytek-announces-its-cryengine-as-... edit:formatting