読者です 読者をやめる 読者になる 読者になる

しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Visual Studio Code で Unity コードを扱う環境を作る

前回 VS Code で Unity の C# コードを開いても全然機能が使えませんでした

http://matatabi-ux.hateblo.jp/entry/2015/12/16/120000

これを何とかしたい!

というわけで探したところ VS Code 用のプラグインがありました

VSCode - Unity Asset Store

ダウンロードしてインポートします

f:id:matatabi_ux:20151216075634p:plain

ぽこっと VSCode というフォルダが追加され、中身には Plugins/Editor/VSCode.cs が入っています・・・これで Unity Editor の機能が拡張されるっぽい

f:id:matatabi_ux:20151216075417p:plain

なんか標準のフォルダ構成とかルールがなくてプロジェクト直下に放り込まれるのが気に入らないのですが、とりあえず Unity Editor のメニューから [Edit]-[Preferences]-[External Tools] を開くと

f:id:matatabi_ux:20151216080049p:plain

コマンドオプションとかいろいろ上書かれてました

「VSCode」なる項目が追加されてます

f:id:matatabi_ux:20151216080236p:plain

さらにメニューに [Assets]-[Open C# Project In Code] が増えているので実行

コマンドプロンプトも同時に立ち上がりますが、これはログ出力用みたいです

cs ファイルを開いてしばらくすると・・・

f:id:matatabi_ux:20151216081039p:plain

まだだめ・・・警告ログを見ると DNX がないとか、v2.0 の System.Core.dll がないとかボロボロ

とりあえず下記を参考に DNX ライブラリとやらをインストールします

Installing ASP.NET 5 On Windows — ASP.NET documentation Installing ASP.NET 5 On Mac OS X — ASP.NET documentation

Windows の場合はまずコマンドプロンプト(管理者)でコマンド実行

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"

環境変数 PATH の設定を有効化するため一回コマンドプロントを閉じ、もう一回コマンドプロンプト(管理者)を開きなおしてコマンド実行

dnvm upgrade -r coreclr

これで DNX 環境は入ったはず

・・・次に Unity プロジェクトのターゲットフレームワークを v2.0 から v4.0 に変更したいのですが、どうも一度 .csproj ファイルの設定を変更しても VSCode Plugin がご丁寧に v2.0 に戻して上書きするという余計なことをしてくれるようです;

VSCode.cs の該当の箇所はここ

~ 中略 ~
        /// <summary>
        /// Remove extra/erroneous data from project file (content).
        /// </summary>
        static string ScrubProjectContent(string content)
        {
            if (content.Length == 0)
                return "";

            // Make sure our reference framework is 2.0, still the base for Unity
            if (content.IndexOf("<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>") != -1)
            {
                content = Regex.Replace(content, "<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>", "<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>");
            }
~ 中略 ~

ここを v2.0 から v4.0 に変更して保存・・・再度メニューから [Assets]-[Open C# Project In Code] 実行

f:id:matatabi_ux:20151216090448p:plain

やったー!インテリセンスが効いた!・・・でも設定だるすぎ