Unity を検索

取り上げているトピック
シェア

パブリックロードマップで表明した通り、12 月の Unity 5.3 から MonoDevelop が MonoDevelop-Unity 5.9 に変わります。MonoDevelop-Unity 5.9 はこのブログ記事を書いている時点で最新の安定版 MonoDevelop であり、MonoDevelop 4.0.1 から多くの改善点や修正が組み込まれています。

md-5.9-debug

MonoDevelop-Unity 5.9 では、私たちは新しいワークフローの改善を追加しました。以前のように “Attach to Process” ダイアログボックスからアタッチするプロセスを選択してデバッグを開始するというワークフローの代わりに、MonoDevelop-Unity 5.9 ではスクリーンショットの赤いオレンジ枠にあるターゲット選択リストにアタッチ可能な Unity のターゲットが出るようになり、”Run” ボタンを押すだけで 1 クリックで選択したターゲットにアタッチしてデバッグを開始出来るようになりました。

さらに日本の開発者にとって嬉しいのは、長年あった Mac 版の MonoDevelop で日本語の入力が出来ない問題が解消されて、日本語入力が可能になったことです。

MonoDevelop-Unity 5.9 は今日から試すことが出来ます。フォーラムから MonoDevelop-Unity 5.9 プレビュービルドをダウンロードしてください。フォーラムへのフィードバックは大歓迎です!MonoDevelop-Unity 5.9 は MonoDevelop 4.0.1 をそのまま置換でき、Unity 4.6 および Unity 5 で利用出来ます。最低必要スペックについてはフォーラムのスレッドを確認してください。

スクリプトデバッグの修正

MonoDevelop-Unity のアップグレードの他に、私たちは MonoDevelop-Unity と Visual Studio Tools for Unity の両方に関係する、スクリプトデバッグの問題修正に取り組んでいます。

Unity 5.3 で修正されたスクリプトデバッグの重要な問題はこちら。これらの修正は、Unity 5.2.2 にも適用されています:

  • switch 文でのステップ実行で発生した問題の修正。
  • 何度も連続してステップ実行してブレークポイントに到達すると Unity がたまにクラッシュする問題の修正。
  • ポーズ後にステップ実行すると Unity がクラッシュする問題の修正。
  • Resources.Load やシリアライゼーションを使う他の Unity API をステップオーバーする問題の修正。
  • GameObject.GetComponents<Component>() のようにジェネリック型の配列を返すジェネリックメソッドを評価しようとするときに Unity がクラッシュする問題の修正。

また、私たちは MonoDevelop-Unity 5.9 特有のスクリプトデバッグの問題についても修正しました。

修正された重要な MonoDevelop-Unity 5.9 特有の問題はこちら:

  • ブレークポイントを有効・無効に切り替える時に “The requested item has been unloaded” となる問題の修正。
  • Enum 型を評価するときに”The requested item has been unloaded” となる問題の修正。
  • “Debugger operation failed. Argument cannot be null” エラーの修正。

MonoDevelop-Unity 5.9 プレビュービルドのダウンロードはフォーラムでどうぞ。

MonoDevelop と Unity の REST 統合

MonoDevelop-Unity と Unity の連携は現在、ソリューションファイル(.sln)とプロジェクトファイル(.csproj)を通して実現されています。

このやり方は Unity でスクリプトファイルの追加・削除や移動、名前の変更に合わせて毎回ソリューションとプロジェクトファイルを更新しなければならず、理想的とは言いがたいところです。Unity がソリューションとプロジェクトファイルをディスクに書いたら、MonoDevelop は毎回これをリロードしなければなりません。Unity と MonoDevelop が直接通信し、Unity で Assets フォルダーの変更がおきるたびに MonoDevelop がアップデートされるほうがより良いアプローチです。

ソリューションファイルを使う方法のもう一つの問題は、Unity と MonoDevelop では同じ C# コンパイラーを使っていないというものです。これは MonoDevelop で出る警告やエラーが Unity で出るものと一致しないとか、Unity ではコンパイル出来るが MonoDevelop ではコンパイル出来ない(あるいはその逆)といったことが発生します。

これらの問題を解決してより深い統合を Unity と MonoDevelop 間で実現するために、現在私たちは MonoDevelop と Unity が REST を介して通信する新しい機能を実装しています。これはどういうことかというと、MonoDevelop と Unity がネットワークソケットを介して直接やりとりするようになり、ソリューションやプロジェクトファイルが不要になるということを意味します。

その代わり、MonoDevelop は Unity から REST メッセージとして送られた Assets フォルダーの階層を表示します。MonoDevelop 上の Assets フォルダーのビューは Unity で Assets フォルダーのファイル構造が変わる度にアップデートされます。さらに、MonoDevelop 上から Assets フォルダーのビューに対してファイルの追加・削除・移動や名前の変更などを直接行うことも可能で、これらの操作を行うと内部では Unity に直接アクションが伝えられます。Unity がそのアクションを MonoDevelop から受け取ってファイルに対する操作を行うと、こんどは Unity から MonoDevelop に対して Assets フォルダーのファイル構造が更新されたという通知が送られ、MonoDevelop 上の Assets フォルダービューが自動的に更新されます。

下記のスクリーンショットは MonoDevelop 上の Unity の Assets フォルダービューの見た目です。おそらく、リリース時にはもうちょっと変更すると思います。

md-rest-5.9-preview-new2

MonoDevelop はスクリプトのコンパイルに関しても REST サービスを使用します。Unity がスクリプトをコンパイルすると、その結果を MonoDevelop に返します。たとえば上記のスクリーンショットでは、Unity でビルドした結果が MonoDevelop に送られて表示されています。

REST サービスはファイル操作やスクリプトのコンパイルに限りません。REST サービスは公開できるあらゆる Unity の機能に対して潜在的には利用可能です。

こちらに MonoDevelop と Unity の REST 統合で予定している機能の一部を紹介します:

  • MonoDevelop と Unity 間の、ファイルを介さないプロジェクト・ソリューションの同期。
  • Assets フォルダー上のファイルの追加・削除・リネーム・移動操作に対する双方向の即時同期。
  • 一貫したビルドの振る舞い。スクリプトをかならず Unity でビルドし、Unity でのビルド結果を MonoDevelop から表示する。
  • MonoDevelop から Play ボタンを押すことで Unity にアタッチするとともにゲームも開始(Play モードに移行)する。

Unity と MonoDevelop の REST 統合は現在、Unity 5.5 での導入に向けて開発中です。進捗とアップデートについては今後またブログで共有いたしますので、ぜひご注目くださいね!

2015年10月22日 カテゴリ: テクノロジー | 4 分 で読めます
取り上げているトピック