Writing code may require basic C# syntax and various Unity3D APIs.
To make an interface, you may need to learn GUI, NGUI and 2Dtoolkit (I forget whether it is written like this).
At least you should know physics engine, character control, 3D control, particle system, audio and model.
If you want to be very powerful, I really suggest that the C# foundation should be deeper.
A lot, you can go to extreme VR, Hebei Game Academy to find out, some people teach and some people bring. See if it suits you.