デコシノニッキ

ホロレンジャーの戦いの記録

【調査】HoloLensでC#7の動作確認

Unity2018.3からIncrimentalCompilerがUWPでも利用できるようになりました。

f:id:haikage1755:20180917025936p:plain:w350


Incrimental Compilerとは

これは、次世代コンパイラと呼ばれる「Roslyn」を Unity で使用し、 変更があった部分だけをリコンパイルすることで、 スクリプトコンパイル時間を大幅に短縮する仕組みです また、C# 7.2 の機能も使用できるようになります

baba-s.hatenablog.com


準備

  1. PackgeManagerからIncrimental ComppilerをInstallする
    f:id:haikage1755:20180917031256p:plain:w450

  2. Scripting Runtime Versionを,NET 4.xにする
    f:id:haikage1755:20180917031418p:plain

  3. Editorを開きなおす


コンパイル時間の短縮もうれしいですが,何といってもC#7.2が使えるようになるのが大きいですね。
コードの内容は酷いものですが,例えばタプルが使えるようになります。

    // Start is called before the first frame update
    void Start()
    {
        var 理解したいもの = "非同期";
        var 結果 = 完全に理解する(理解したいもの);

        Debug.Log($"Q. {理解したいもの}は完全に理解できましたか? A. {(結果.理解できたか ? "はい" : "いいえ")}");
        Debug.Log($"Q. 何か少しでも{理解したいもの}を理解できましたか? A. {(結果.分かったこと)}");
;
    }
    private (bool 理解できたか, string 分かったこと) 完全に理解する(string 理解したいもの) => (false, "分からんなんも");

コンソール出力結果
f:id:haikage1755:20180917031639p:plain:w450

勿論,実機でも動きます
f:id:haikage1755:20180917030921p:plain:w450

あとは未確認なのですが,C#7が使えるということでUniTaskも使えるようになる気がします

UniTaskも動作します。

    async void Start()
    {
        var msg = await TestMethod();
        Debug.Log(msg);
    }

    async UniTask<string> TestMethod()
    {
        return await Task.Run(() => "Hello");
    }

(他に画像なかったんだろうか…)
f:id:haikage1755:20180917171759p:plain:w350

qiita.com

[デコシノニッキ]は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」