How to use Visual Studio with Unity
April 11, 2015 | 9 comments

How to use Visual Studio with Unity

This is a quick quide on how to use Visual Studio with Unity. Visual Studio is only available for Windows, but a lot of Unity developers on Mac think it's so great they go through the hassle of using virtual machines just to use it.

If you're wondering why you should switch from Mono Develop there's a section devoted to that further down.

Install Visual Studio

  1. Firstly, you'll want to go here here and click "Download" to download the tiny Visual Studio installer application.
  2. Run the installer application. You can opt out of all the extras, I did. We don't need any of them for Unity development. The installer claims that Visual Studio will use 8 GB split across all drives when you opt out of all the extras, but it still ate 10 GB of the drive I installed it to so keep that in mind. It's quite bloaty.
  3. You may be asked to create a Microsoft account or log in with your existing one. This is probably not necessary, but I already have a Microsoft account which I use for my Xbox so I just logged in with that. This will apparently allow you to synchronize settings etc. across different computers. Not something I'll use.

Now that Visual Studio is installed you can launch Unity. Inside Unity go to "Edit" => "Preferences" => "External Tools" in the menu bar. Browse for an external script editor and navigate to "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE" and select "devenv.exe".

Image showing the preferences dialog inside Unity
Hopefully you'll never have to look at Mono Develop again.

That's it, now you can edit your scripts in Visual Studio just like you would in Mono Develop. And if that was all that you wanted to do then you can close this tutorial and continue with your Unity project. But for those of you who want actual debugging there are still some steps left. At the moment If you click "Start debugging" (F5) inside Visual Studio you'll get an error. Obvisouly we want to properly debug our code as well. Quit Unity and Visual Studio, not sure if this is necessary, but let's just play it safe. We'll have to install a plugin for Visual Studio and Unity.

Install Visual Studio Tools for Unity

  1. Go here and download the Visual Studio Tools for Unity. Get the one that corresponds to your version of Visual Studio. I have Visual Studio 2013 so I chose the corresponding version of Visual Studio Tools for Unity.
  2. Download the plugin.
  3. Install the plugin. This should be a one click installation.

Now you can launch Unity again, but this time go to "Assets" => "Import Package" and choose "Visual Studio 2013 Tools" from the list. Doing this will properly configure this Unity project so that it can be debugged using Visual Studio.

NB: This will automatically configure your external editor settings, meaning the manual setup we did earlier isn't necessary. I just did that to show you how you could set it up if you didn't want or need debugging. For any future projects you just have to import the plugin and you're done. This can be done directly from the Unity launcher when you create the project.

Image showing the import assets dialog inside Unity
You'll need to import this into all the projects you want Visual Studio debugging for. A small price to pay in my opinion.

Now that you've imported the Visual Studio for Unity plugin you'll notice that a "Visual Studio Tools" menu item has appeared in the menu bar at the top. This has some settings etc. for the plugin. I haven't needed to touch these so I just left them alone. This plugin will make debugging inside Visual Studio work just as easily as it does inside Mono Develop. I'm assuming you already know how to debug your code so I won't go into that. However if you don't know, and you want to learn you can just ask me and I'll try to help you as best I can. There's also a lot of information available here.

Other features I also use are the Unity Project Explorer. It shows you your folders and scripts inside Visual Studio just as they appear inside the project window in Unity. The quick documentation access which lets me quickly go to the documentation page for a Unity method. And the Monobehaviour wizard which lets me quickly create methods like OnCollisionEnter etc. without having to remember their name exactly. This plugin offers a lot more functionality as well, I just haven't needed it myself yet. You can debug builds for example. Check out this link for more information about the features I've listed here and all the other features as well..

And that's it. Now you can do all the things Mono Develop allowed you to do in Visual Studio instead.

Why change from Mono Develop?

I've only told you how to get Visual Studio to do the same things you were already able to do in Mono Develop so why should you bother going through this hassle? If you are perfectly happy with Mono Develop and don't feel like there's anything wrong with it then there's probably not much I can say to change your opinion, but here are my pros and cons of using Visual Studio over Mono Develop.

Pros:

  1. Mono Develop is one of the slowest IDE's I've worked with. Visual Studio is one of the fastest. I find that in larger projects or code files Mono Develop will slow to a crawl. Visual Studio isn't faced by this.
  2. I have two fairly persistent bugs with Mono Develop. The first is that Mono Develop will permanently stick on top of all my other windows. So it's impossible for me to ALT+TAB to Unity or any other application. The only fix is to restart Mono Develop. The second bug is that suddenly I can't interact with any part of the Mono Develop interface except for the text editor area. So I can't change tabs or do anything with the application itself. The only fix is of course to restart Mono Develop.
  3. Apart from these two I also have many smaller, equally annoying bugs. Sometimes the syntax highlighting would stop working, or it would stop highlighting errors, or the code completion dropdown would refuse to show.
  4. Mono Develop also crashes quite a few times entirely on its own. I've never experienced this with Visual Studio.
  5. I've also had no luck in getting my Unity errors to automatically show inside Mono Develop. I know I can get them in Mono Develop if I build my project in there, but this is cumbersome and unnecessary. In Visual Studio this just works. You can even see the Unity console inside Visual Studio.
  6. The Visual Studio code completion is lightning fast and precise compared to the one in Mono Develop.
  7. The developers of Mono Develop suddenly decided that they would stop showing column numbers. A feature every text editor has and every developer takes for granted. Because of this the Mono Develop error log can't even show you the column the error occurred on, which is pretty funny. Not a huge deal in itself, but it makes me question the competence of the people in charge. Visual Studio has an actual footer which shows you the current line number and column number just like you would expect. And the error log shows the column of the error, just like you would expect.
  8. I've given up trying to make Mono Develop try to respect my coding standards. It seems to reset to tabs instead of spaces, 120 column width, the wrong brace placement etc. every single time I open it. By comparison it's amazingly easy to customize Visual Studio to respect your coding style once and forever.
  9. Speed, speed, speed. I can't stress this enough. Visual Studio is so much faster than Mono Develop. Try writing some code in Mono Develop and then try writing the same piece of code in Visual Studio. You'll be amazed if you haven't used Visual Studio before. The automatic formatting, the code completion, everything is just so quick and snappy.

Cons:

  1. Visual Studio is 10 GB, Mono Develop is 200 MB. Visual Studio comes with a ton of crud you'll never ever need.
  2. I haven't yet been able to configure the syntax highlighting in Visual Studio the way I want it. I think it's possible, but Mono Develop currently has better syntax highlighting in my opinion.

I haven't mentioned the debugger at all. That's because I haven't been able to use it much with Unity. I never used the Mono Develop debugger because I felt it was slow and cumbersome, and most recently I've only been using Visual Studio for about a week with Unity. I used it for years with XNA and I loved using the debugger there so I have no reason to think it has gotten worse, but I feel like I have to become acquainted with it again before I can voice my opinion about it. I used Visual Studio C# Express with Unity 2 before I switched to Mono Develop when Unity 3 came so I feel I have some experience with both editors, and I find Visual Studio to be the superior choice. With Mono Develop I felt like I had to ALT+TAB back and fourth between Unity all the time, with Visual Studio I rarely open the Unity editor at all.

But I've gotten used to the dark Mono Develop skin

Don't worry, I've got you covered.

The dark Mono Develop skin is called Oblivion and someone has made a version of it for Visual Studio available here. The FAQ here will tell you how to install this skin in Visual Studio. Keep in mind this is just for the text editor, not for the entire application. But often that's the only thing you care about. I chose the Visual Studio dark skin for the application and I think it goes great with the Oblivion text editor skin.

Image showing my Visual Studio skin
This is how my Visual Studio looks. It's the default dark skin with the Oblivion text editor skin. I also changed the breakpoint column from white to black. (View large version)

However, If neither the blue, dark or light application skin is to your liking you can install this plugin. It comes with a few custom skins for the entire application, and you can also create your own skin based on an existing one.

And that's it. Now your Visual Studio is configured just the way you want it and it should work flawlessly with Unity. If you're stuck on something or have any questions I'll be happy to help you. And if you're wondering why I've only recently switched from Mono Develop to Visual Studio it's because you used to need Visual Studio Pro to do this and it was very expensive. And when they made Visual Studio Pro free with the release of the Community Edition I wasn't paying attention. Let's just say that I hate myself for not finding out sooner, but I'm glad to be back with Visual Studio again.

Øyvind Strømsvik's picture

About Øyvind Strømsvik (TwiiK)

I've been passionate about games all my life and started dabbling in game development about 15 years ago with BlitzBasic,... read more but I quickly lost interest and began doing 3d modeling instead. 3d modeling remained a hobby and I picked up game development again around the release of Unity 2.0. My driving force behind wanting to get back into game development was my lost interest in commercial games as they started appealing to a group of gamers I was no longer in. Indie games were the only games that still looked interesting, but at the same time some of them looked like they would be just as fun to make as to actually play. And many of them were made by just one guy.

Tagged with: Tutorial, Unity, Visual Studio
Paul Hocker's picture

Paul Hocker

Thanks, this was so helpful getting me up and running today. I have despised MonoDevelop for many moons, and this will save what little hair I have left.

Cody Green's picture

Cody Green

Thank you so very much, this was a great article! I can't wait until my VS 2015 RC finishes installing so I can try this out! I also very much appreciated your opinions about the pros and cons of using VS with Unity. I found that the unityVS documentation was a bit lackluster though (Not any fault of your own)

Leon Oscar Kidando's picture

Leon Oscar Kidando

Awesome post.
MonoDevelop is currently at v4 but it feels like it's v0.4. I am convinced that it's still in alpha. for a small size package, it feels like it weighs a ton. Plus, bugs cause entire scripts to be wipped... just like that. After using PHPStorm, Sublime and now Visual Studio... MonoDevelop feels like a let down.

Daniel Goldstein's picture

Daniel Goldstein

Thanks, this is much better. Mono was crashing every hour on my work PC.

anon's picture

anon

Very informative and easy follow, thanks for the great guide! Just one minor issue I noticed - to enable debugging in VS you said to choose "Assets" => "Import Assets", but it should be "Assets" => "Import Package" (the screenshot cleared up the confusion for me :)

Øyvind Strømsvik's picture

Øyvind Strømsvik

@anon: Ahh, thanks. I've fixed that now.

Don Cathcart's picture

Don Cathcart

Great article and very straightforward!

Jack Bryant's picture

Jack Bryant

Thanks a lot, this small plugin was exactly what I needed and the tutorial was great too!

Jack Smith's picture

Jack Smith

Thanks for the awesome tutorial.

Working through the solution, I noticed that the link to visual studio 2013 tool for unity should be https://visualstudiogallery.msdn.microsoft.com/20b80b8c-659b-45ef-96c1-4...

Also on this page there is a link to the Unity 5.2 users, read our documentation about Unity's native support for VSTU. where it says
"
Starting with Unity 5.2, the Visual Studio Tools for Unity integrate natively inside Unity, which requires VSTU 2.1.

There is a slight change in the workflow and in the configuration of Unity that this page documents.

The biggest change is that you don't need to import the VSTU Unity package anymore with Unity 5.2. Unity will detect if it's installed, and if so, load it for you. From that point on, VSTU will handle the generation of the project files for Unity, and opening files from Unity will open them inside the VSTU solution.

Unity 5.2 will ignore the VSTU package if it is imported it your project, and will always load VSTU from its installation folder. We encourage you to delete the former UnityVS folder from your Unity 5.2 projects.

The only thing you need to do is to set Unity to use Visual Studio as the external script editor.
"

Hope this helps for people installing visual studio 2013. Thanks again for getting this up and running for me!

Add new comment