Edit: Clarification, this explains how to create a custom C# Visual Studio project, link it to unity, compile a DLL of it, use the scripts inside the DLL in Unity and how to debug it. I know you can use visual studio as your "unity editor", but this is not the same thing. Edit #2: Some people have reported that they have to specify either .NET 3.0 or 3.5 to be able to reference UnityEngine.dll, I'm not sure why this is as you can clearly see in the video that it's possible to link it against 2.0 (could have to do with different unity versions, I'm not sure). This is a video tutorial (about 9 minutes) that explains how to use Visual Studio for both coding and building your unity code, it also shows how to debug the custom assembly that visual studio generates from inside Unity. I would advice you to watch it in 720p on YouTube to see all the text, etc. properly. Here's the text snippet I paste into the Post-Build Event in visual studio in the video (watch the video and you will understand). Code (csharp): echo f | xcopy "$(TargetPath)" "C:\MyProject\MyProject.Unity\Assets\Assemblies\" /Y echo f | xcopy "$(TargetDir)$(TargetName).pdb" "C:\MyProject\MyProject.Unity\Assets\Assemblies\" /Y "C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe" "C:\MyProject\MyProject.Unity\Assets\Assemblies\$(T argetFileName)" A few benefits of using this method You can use compile time constants (defines in the project) You can use an obfuscator on your DLL very easily Unity will not mess with your project files and force you to reload them You get the awesome intellisense of VS2010 Enjoy!