あらすじ
UnityとVSCodeで開発していくために必須な項目を列挙していきます。
Windows の記事です。Macは別で書きます。
インストールするもの
- Chocolatey
- Visual Studio Code
- Unity Hub
- Unity 2019 (LTS)
- LTS とは「安定バージョンとして長期的にメンテナンスされているバージョン」です
- Mono
- NetFramework 4.7.1 Tageting Pack
Chocolatey
インストール用ページに行きます。
こんなコマンドが「コピーしてっ!」て感じで書いてあるのでコピーします。
Set-ExecutionPolicyBypass-ScopeProcess-Force;[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.ServicePointManager]::SecurityProtocol-bor3072;iex((New-ObjectSystem.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
自分のPCで、powershellを起動します。先ほどコピーしたものを貼り付けてEnterキーで実行します。
※ここでpowershellのウィンドウは一度閉じてください。完全に。
VScode
Chocolatey を使って、VScodeをインストールします。
powershellを立ち上げて、下記のコマンドを実行します。
chocoinstallvscode-y
拡張機能
下記の3つの拡張機能は必須です。
https://marketplace.visualstudio.com/items?itemName=Unity.unity-debug
https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp
https://marketplace.visualstudio.com/items?itemName=ms-vscode.mono-debug
インストールはもちろんコマンドです。Powershellで下記を実行します。
code--install-extensionUnity.unity-debugcode--install-extensionms-vscode.mono-debug
※vscodeのインストール後にpowershellを開きなおすか、refreshenv
コマンドを実行してから行ってください。
ms-dotnettools.csharp
はUnity.unity-debug
をインストールする時に半自動的にインストールされます。
Mono
MonoはC#のオープンソース実装です。
https://www.mono-project.com/download/stable/
これをインストールして、Pathの設定をしておきます。
Windowsの場合、システム環境変数のPathでも、ユーザー環境変数のPathでもどちらでもよいです。
なんか32bitとか64bitとかGTK有り無しとか、考えるのが面倒です。
そのため、思考停止でchoco install mono
します。
念のため、確認するためにmono --version
コマンドを実行すると、64が入ったみたいです。(GTKは?)
MonoJITcompilerversion6.12.0(VisualStudiobuiltmono)Copyright(C)2002-2014Novell,Inc,XamarinIncandContributors.www.mono-project.comTLS:__threadSIGSEGV:normalNotification:Thread+pollingArchitecture:amd64Disabled:noneMisc:softdebugInterpreter:yesLLVM:supported,notenabled.Suspend:preemptiveGC:sgen(concurrentbydefault)
GTKがどうなったのかよく分かりません。詳しく知りたくなったら、Inkscape開発者とかGimp開発者に聞いたら良さそうです。
ちなみに、cmdでwhere mono
したら、monoは下記に居ることが分かりました。
C:\Program Files\Mono\bin\mono.exe
.Net Core
https://dotnet.microsoft.com/download/
Build Appsしなければいけないので、SDKをダウンロードしてインストールします。
これはとりあえず最新をいれれば動きます。
5 がrecommendedらしいので5を使います。
(SDKは64bit版しかないらしい。)
.Net Framework
https://dotnet.microsoft.com/download/
にて最新版をダウンロードしてインストールしてもダメでした。
[fail]:OmniSharp.MSBuild.ProjectLoader.NETFramework,Version=v4.7.1の参照アセンブリが見つかりませんでした。この問題を解決するには、このフレームワークバージョンのDeveloperPack(SDK/TargetingPack)をインストールするか、アプリケーションのターゲットを再設定してください。https://aka.ms/msbuild/developerpacksで.NETFrameworkDeveloperPackをダウンロードできます。
Vscodeで拡張機能を入れると出てくるエラーメッセージを確認します。
該当するバージョンを、エラーメッセージ内のURL
https://aka.ms/msbuild/developerpacks
からダウンロードしてインストールする必要があるようです。
うまく設定できたか確認
Unityの右クリックメニューで一番下にあるOpen C# Project
から、vscodeを開いてみましょう。
そのとき、下記のようなlogが出ます。
--------------------------------------------------------------------------------Razor.VSCodeversion6.0.0-alpha.1.20575.5--------------------------------------------------------------------------------Razor's trace level is currently set to 'Off'
- To change Razor'stracelevelset'razor.trace'to'Off','Messages'or'Verbose'andthenrestartVSCode.-Toreportissuesinvokethe'Report a Razor issue'commandviathecommandpalette.-----------------------------------------------------------------------------------------------------------------------------[Client-16:46:55]NoRazorfilesdetectedinworkspace,delayinglanguageserverstart.
StartingOmniSharpserverat2021/2/1816:46:55Target:c:\Unity\ProjectFighterX\ProjectFighterX\ProjectFighterX.slnOmniSharpserverstarted.Path:c:\Users\%username%\.vscode\extensions\ms-dotnettools.csharp-1.23.9\.omnisharp\1.37.6\OmniSharp.exePID:6840StartingOmniSharponWindows6.2.9200.0(x64)DotNetPathsettodotnetLocated3MSBuildinstance(s)1:VisualStudioBuildTools201916.8.30804.86-"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"2:VisualStudioCommunity201916.7.30621.155-"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin"3:StandAlone16.8.0-"c:\Users\%username%\.vscode\extensions\ms-dotnettools.csharp-1.23.9\.omnisharp\1.37.6\.msbuild\Current\Bin"
下記画像を見ていただくと、5・6行目の間に0 references
と表示されています。
また、MonoBehabiour
のあたりにマウスカーソルを当てていますが、DocString
の中身が表示できています。
ここまでくれば完璧です。
ちなみに初回のみ下記のようなLogが出ます。合計130MBくらいダウンロードしていますね。
InstallingC# dependencies...Platform:win32,x86_64Downloadingpackage'OmniSharp for Windows (.NET 4.6 / x64)'(36013KB)....................Done!Validatingdownload...IntegrityChecksucceeded.Installingpackage'OmniSharp for Windows (.NET 4.6 / x64)'Downloadingpackage'.NET Core Debugger (Windows / x64)'(43209KB)....................Done!Validatingdownload...IntegrityChecksucceeded.Installingpackage'.NET Core Debugger (Windows / x64)'Downloadingpackage'Razor Language Server (Windows / x64)'(52339KB)....................Done!Installingpackage'Razor Language Server (Windows / x64)'Finished
Unityとvscodeを連携させる
UnityでWindow
→PackageManager
でこのようなウィンドウが開きます。
ここで、Visual Studio Code Editor
がVerified
のバージョンか確かめます。
もし古かったりしたら、Up to date
ボタンを押して最新にします。
次に、Edit
→Preference
でこのウィンドウを開きます。
External Script Editor
をVisual Studio Code
に変えます。
これで、Unityの右クリックメニューOpen C# Project
を押したときや、
Unity上でC#ファイルをダブルクリックしたときに、vscodeが開くようになります。
External Script Editor Args
はデフォルトで "$(ProjectPath)" -g "$(File)":$(Line):$(Column)
になっています。
書き換えてカスタマイズしてもいいですし、Reset argment
ボタンでもとに戻すこともできます。
generate .csproj files for:
のところはすべてチェックを入れておきましょう。
チェックを入れた後に、Regenarate project files
ボタンを押せば、vscodeがc#プロジェクトを認識できるようになります。
デバッグしてみる
ドロップダウン選択できるところをUnity Editor
にしてF5
キーを押せばデバッグが始まります。
上記ができたら、Unityに戻ってPlayボタン(横三角ボタン)を押しましょう。
Debug.Logの出力がvscode側にも出ます。
.vscodeフォルダ内のおすすめ設定
settings.jsonは自動生成されます。 launch.jsonは自動生成されます。 extensions.jsonは自作します。チーム内で使う拡張機能をサジェスト共有できます。長いので折りたたんでおきます
{"files.exclude":{"**/.DS_Store":true,"**/.git":true,"**/.gitignore":true,"**/.gitmodules":true,"**/*.booproj":true,"**/*.pidb":true,"**/*.suo":true,"**/*.user":true,"**/*.userprefs":true,"**/*.unityproj":true,"**/*.dll":true,"**/*.exe":true,"**/*.pdf":true,"**/*.mid":true,"**/*.midi":true,"**/*.wav":true,"**/*.gif":true,"**/*.ico":true,"**/*.jpg":true,"**/*.jpeg":true,"**/*.png":true,"**/*.psd":true,"**/*.tga":true,"**/*.tif":true,"**/*.tiff":true,"**/*.3ds":true,"**/*.3DS":true,"**/*.fbx":true,"**/*.FBX":true,"**/*.lxo":true,"**/*.LXO":true,"**/*.ma":true,"**/*.MA":true,"**/*.obj":true,"**/*.OBJ":true,"**/*.asset":true,"**/*.cubemap":true,"**/*.flare":true,"**/*.mat":true,"**/*.meta":true,"**/*.prefab":true,"**/*.unity":true,"build/":true,"Build/":true,"Library/":true,"library/":true,"obj/":true,"Obj/":true,"ProjectSettings/":true,"temp/":true,"Temp/":true}}
{// IntelliSense を使用して利用可能な属性を学べます。// 既存の属性の説明をホバーして表示します。// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"name":"Unity Editor","type":"unity","path":"Unityプロジェクトフォルダの絶対path/Library/EditorInstance.json","request":"launch"},{"name":"Windows Player","type":"unity","request":"launch"},{"name":"OSX Player","type":"unity","request":"launch"},{"name":"Linux Player","type":"unity","request":"launch"},{"name":"iOS Player","type":"unity","request":"launch"},{"name":"Android Player","type":"unity","request":"launch"},{"name":"Xbox One Player","type":"unity","request":"launch"},{"name":"PS4 Player","type":"unity","request":"launch"},{"name":"SwitchPlayer","type":"unity","request":"launch"}]}
{"recommendations":["CoenraadS.bracket-pair-colorizer-2","ms-dotnettools.csharp","MS-CEINTL.vscode-language-pack-ja","ms-vscode.mono-debug","kameshkotwani.google-search","Unity.unity-debug","VisualStudioExptTeam.vscodeintellicode"],// List of extensions recommended by VS Code that should not be recommended for users of this workspace."unwantedRecommendations":[]}
まとめ
みなさん設定完了しましたか?これで、軽快動作なvscodeで心地よい作業環境になりました。いえい!
もし困ったらコメント欄で聞いていただいたらお答えします。
公式情報
Excelsior!