Version: 2017.1
環境シャドウ
スクリプタブルレンダーパイプライン

スクリプティングランタイムアップグレード

2017.1 では、.NET 4.6 を、プロジェクトごとに選択できる実験的なオプションとして使用できます。GUI では、このオプションは Player Settings で Scripting BackendApi Compatibility Level の上に表示されます。

同等のスクリプティング API は PlayerSettings.scriptingRuntimeVersion プロパティーです。この設定を変更するにはエディターを再起動する必要があります。なぜなら、この変更はプレイヤー同様にエディターにも影響するからです。

デフォルトでは、Unity の挙動や .NET 機能は何も変わりません。任意のプロジェクトに対し新しい .NET 4.6 を選択すると、C#6、.NET 4.6 クラスライブラリ、新しいランタイム機能をユーザースクリプトや事前コンパイルされたアセンブリで使用できるようになります。

FAQ

どのプラットフォームに使用できますか?

すべてのプラットフォームに使用できますが、それぞれ違いがあります。

  • エディターとスタンドアロンでは、このオプションを有効にすると新しいバージョンの Mono が使われます。

  • すべてのコンソールプラットフォームでは、新しい .NET バージョンを適用すると IL2CPP だけしか使えません。

  • iOS と WebGL では、IL2CPP だけしか使用できません。

  • Android では引き続き Mono と IL2CPP がサポートされます。

  • その他のプラットフォームでは、新しい Mono か IL2CPP どちらかをサポートするように開発中です。

2017.1b4 バージョンでは、このオプションはデスクトップ、 iOS、Android だけで使用して下さい。他のプラットフォームに対するサポートは、まだ完成していません。

IL2CPP とは?

IL2CPPは、新しい.NET 4.6 API とその機能を完全にサポートしています。

更新した Mono/IL2CPP はどのくらい安定していますか?

新しいMono / IL2CPP は Unity の内部的な自動テストをパスしました。もちろん、まだ、使用中に問題が発生することが予想されます。もし問題が発生した場合は、それをレポートしてください。

このプレビューには新しい GC が含まれていますか?

いいえ。ここでは、クラスライブラリとランタイムのアップグレードです。ただし、まだ Boehm GC が使われています。IL2CPP とともに使用する新しいバージョンの Boehm を適用しています (そのため IL2CPP と Mono にまったく同じ GC が使用されています)。

ちょっと待って、なぜ、新しい GC でないのですか?

新しい Mono ガベージコレクタ (SGen) を使うには、Unity でさらに開発が必要とされます。新しいランタイムとクラスライブラリを安定させてから、その作業を進めます。

この新しい Mono でマネージコードをデバッグできますか?

新しい Mono には VSTU 3.1 が必要です。Windows で新しい Mono ランタイムを使うには、 VSTU 3.1 をインストールして下さい。

MonoDevelop は現在、新しい Mono ランタイムをデバッグできません。ただし、現在この問題を修正しようと努力しています。

なぜ、新しいバージョンの .NET を使うとビルドが大きくなるのですか?

.NET 4.6 クラスライブラリは、現在使っている .NET 3.5 クラスライブラリよりもかなり大きいものです。Unity は、マネージリンカーを向上させ、もっとサイズを減らせるように開発中です。

さらに、以下のような新しい Unity 特有のクラスライブラリ API プロファイル (現在の Unity プロファイルに類似) を開発中です。

a) 特に AOT プラットフォームで使用できるよう装備されています。

b) API プロファイルを最小限に保ち、内部でストリップ/リンクできるように設計されています。

c) netstandard 2.0 (まだ、正式にはリリースされていません) をサポートします。

この新しいオプションを使おうとすると、不具合があります。どうすればよいでしょうか。

問題をレポートしてください。できるだけ早く、それらを修正します。


環境シャドウ
スクリプタブルレンダーパイプライン