相信很多人,在做Unity 游戏开发的时候,是喜欢用 visual studio 来写代码了。可惜的是,如果你在 mac 上开发就没有 Windows 那样便利了。别跟我说 mac 版的 visual studio,在我看来就像阉割版。

vs code 像 sublime、notepad++、atom 等编辑器一样,轻量级,插件多。今天笔者就在开发的时候 monoDevelop 莫名的打不开,所以就决定用 vs code+插件的方式来开发调试程序。

vs code 还有一个好处是,很多快捷键跟 windows 上的 visual studio一样,这样熟悉 windows 上开发的话,很快就能上手了。

首先介绍一个网址:vs code官方介绍

vs code 下载网址:
https://code.visualstudio.com/Download

.NET 本地安装

首先的确保你的 mac 安装了 .net 的 sdk,如果没有的话,请先去下载,下载网址https://www.microsoft.com/net/learn/get-started/macos

如果安装成功的话,你在 terminal 上敲下面命令行:

dotnet --version

运行结果出现下面的提示,证明你的 dotnet 安装成功了。

Unity 设置

打开你的 unity ,选择 Unity->Prefences->External Tools,做如下图的设置,使你的 unity 默认代码编辑器是 vs code。

关联成功之后,你双击 unity 项目中的 代码默认就打开 vscode了。到这里就成功了一半。

断点调试

打开 vs code 之后,点击 Debug->Install Additional Debuger..

在出来的列表中,定位到 Debugger for Unity, 点击安装,等待安装完成。

如果你点击调试按钮,vs code 右下角出现如下图示的错误:

这是因为你电脑没有安装mac mono 所造成的,这里说所的mono 并不是unity安装自带的monoDeveloper, 你可以下载mac mono 在如下地址:
http://www.mono-project.com/download/

点击左上角调试按钮,Attach 到 Unity。如果没有出现 Unity-Editor 的选择,先删除本地的 .vscode/Launch.json, 然后重启vscode.

我试了一下,按 F5快捷键 也可以直接开启调试的,这点跟 Windows 相同,还有 F12跳到函数定义,都是一样的。哈哈。。

生成 DLL

有时候我们的代码不一定写在 unity一侧,而是一个 lib工程。作为类库,导入到 unity 项目中,而 vs code 如何编译生成 dll 呢。

这里我们使用dotnet new 命令来生成一个空的 lib 工程,名字叫 helloworld.

dotnet new classlib -n "helloworld"

然后编译生成 dll 。

dotnet restore
dotnet build

运行结果如下所示:

生成的 dll 保存路径都有放在/bin/Debug/目录下。默认生成的 Debug 模式的,如果想生成Release 和更改生成的路径等可以用参数指定

除了使用dotnet命令, 我们还可以使用msbuild来编dll, 如果我们的sln里包含了多个.csproj 就非常适合使用MSBuild了。

首先安装,可以去mono官网去下载最新版本, 下载地址:https://download.mono-project.com/archive/

msbuild /vershion

运行结果如下所示:

cd到sln所在的目录,清除历史编译生成的dll,可以使用:

MSBuild CFClient.sln /t:Clean

上面CFClient.sln 是sln的文件名

重新生成新的dll可以使用如下命令:

MSBuild CFClient.sln /t:Rebuild /p:TargetFrameworkVersion=v4.0 /p:Configuration=Debug /p:PostBuildEvent="" /p:TargetFrameworkProfile="Client"

更多的使用可以使用命令查看:

MSBuild /?

vs code 插件

Unity Shanderlab 代码高亮提示

注释功能,键入”///”或者”/**/” 自动帮你生成注释,风格跟 vs 一样的。

配置代码自动换行和保存格式化可以通过点击 Code->Prefences->Settings,
在右侧栏配置相关的选项,左边是所有可配置选项的说明,下面是我的配置选项。

{
    "workbench.activityBar.visible": false,
    "window.zoomLevel": -1,
    "workbench.statusBar.visible": true,
    "editor.minimap.enabled": false,
    "editor.formatOnSave": true,
    "csharpfixformat.style.braces.onSameLine": false,
    "csharp.format.enable": true
}

正所谓好刀不误砍柴功,有了更加强大的编辑器,我们写代码的效率也会相应的提升。

Unity2019升级问题

1. 跳转问题

最近把unity升级到2019版本, 在新版本中unity官方提供了以package的方式来支持vscode。 但是还是有一些问题, 比如说在vscode打开的情况下,在unity测双击代码,vscode不能自动跳转到对应的代码页, 有时候打开代码的时候只是welcode启动页。

这时因为unity自带的vscode editor版本不是最新的, 你可以在菜单栏点击Windows->Package Manager, 此时你可以看到当前装的所有unity package plugin.

选中Visual Studio Code Editor, 在展开页中选中show all version, 升级到最新版本就正常了。

2. 自动补全

如果在.vscodes的setting.json中隐藏了 “.sln” 和 “.csproj”, 自动补全就会消失,只要在VSCode的资源管理器中可以看到这两种文件,重启OmniSharp Server就好了。。。

按F1键后输入: OmniSharp:Restart OmniSharp