はじめに
issue で Unity 2017 における .NET 4.6 から uREPL が動かないとの報告を受けていたので対応を行いました。.NET 3.5 はエディタ上では動くのですがビルドで正常に動かない不具合が解消できなかったため、サポート外となっています。.NET 3.5 を使いたい場合は以前のリリースをご使用下さい。
uREPL については以下の記事をご参照下さい:
環境
- Unity 2017.3.0b11
ダウンロード
Release から v0.5.0 以降をダウンロードしてください。
解説
主に Mono.CSharp.Evaluator
のセットアップの仕方が変わりました。以前は、Evaluator
は static な変数でしたが、Mono.CSharp.CompilerContext
を与えて自分で new するようになりました。
var settings = new Mono.CSharp.CompilerSettings(); foreach (var assembly in System.AppDomain.CurrentDomain.GetAssemblies()) { if (assembly == null) continue; settings.AssemblyReferences.Add(assembly.FullName); } var printer = new Mono.CSharp.ConsoleReportPrinter(reporter); var context = new Mono.CSharp.CompilerContext(settings, printer); evaluator = new Mono.CSharp.Evaluator(context);
エラーログは TextWriter
派生のクラスを ConsoleReportPrinter
に与えてあげれば渡ってくるようになります。詳細は以下の stackoverflow をご参照下さい:
おわりに
今後は古い C# のスタイルを新しいものに置き換えて行こうと思います(主に Thread
周りを async
にしたい)。対応すれば HoloLens でも動くようになるかもしれません。。。整理し終わったら時間のある時にポチポチ機能を追加していきます。