Search 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クリックで選択したターゲットにアタッチしてデバッグを開始出来るようになりました。

monodevelop-mac-ime

さらに日本の開発者にとって嬉しいのは、長年あった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.1p4にも適用されています:

  • 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での導入に向けて開発中です。進捗とアップデートについては今後またブログで共有いたしますので、ぜひご注目くださいね!

78 replies on “MonoDevelopのロードマップについて”

[…] debugging issues to bring you a greatly improved experience when using MonoDevelop. Check out our blog post on the subject to learn […]

[…] اصبح الان تتبع الاخطاء البرمجية وعمل التحليلات اسهل بكثير ويتطلب خطوات اقل فقط مع زر التحليل للاخطاء مزيد من التفاصيل من مدونة يونيتي  […]

Just updated to Unity 5.3 and love it! My only issue right now is that MonoDevelop 5.9 is now no longer refactoring or using autocomplete. It drives me crazy! I’ve tried clearing out all the .sln files and all that from the project root folder but to no avail… super frustrating! Is anyone else experiencing this? If I set my IDE to a previous version of MonoDevelop (I think its 4.1) it works normally. What do I do!?

I just recently updated to Unity 5.3 which came with the update to Monodevelop (5.9). I now cannot do any debugging in UnityScript. My entire game was written in UnityScript. How can I fix this issue? I’ve tried installing and uninstalling a few times now to no avail.

I posted the comment twice by mistake, delete this one an apologies! Not trying to spam the thread, I have no relation with Consulo developer

I was using this in the last few weeks: https://github.com/consulo/consulo
Is a fork of IntelliJ with support for Unity including debugging and, TBH, was like find water on the desert!

The project is maintained by a single guy and I’m sure that with a bit of love from Unity will be able to go much farder.

I use IDEA at work and at home, it is very productive. JetBrains won’t deal with C#, because they sell ReSharper. I tried Consulo for Unity project, it’s really good. Also, it is a known fact that Googles’ Android Studio is based on IntelliJ IDEA.

Thanks for continuing to support/improve Monodevelop. I’m reading a disproportionate number of complaints about Monodevelop.

I’ve used to for several years now on a part-time basis and it’s been great. Autocomplete, refactoring and debugging all work as advertised. It does some funky magical renaming of scripts when you refactor the name of monobehavior classes. But once you get used to it, it’s pretty nice actually.

I tried VS with Unity. I’ve used VS a lot over the years for C++ and C# development but with Unity I found it was perhaps, overkill. Monodevelop gets out of my way and let me just code. So thanks for supporting it.

I just hope that someday you completely remove it. I’ve never had a good experience with monodevelop my whole career with unity. On every version bundled with unity its always been completely broken.

Obscure Error messages all the time. My scripts will randomly just not save and I don’t realize it until 20min of debugging when I decide to check out the file in another editor. It’s always been painful and unusable.

Right now I’m using Atom and without the integration my experience has been so much better.

Are there any disadvantages of using Xamarin Studio with Unity? I’ve been using that for some time now, and it seems to work fine together with auto-completion and so on, but at the same time I’m just scratching on the surface when it comes to scripting in Unity so there could be something missing I guess.

Just this …

“Fixed “The requested item has been unloaded” when evaluating enums.”

… makes the upgrade worth for me.

This is a very substantial announcement if properly implemented. If you guys really build out everything using RESTful web services, this opens the door for pretty much ANY tool to be integrated with Unity without having to worry about the integration of a UnitySDK or anything similar. I like where you guys are heading with this one because one could start building their own homegrown tools for Unity in a consistent manner.

Hopefully you guys will provide strong documentation for this (or at least stronger than what we got for uNet ;) ).

One more thing — would it be possible to be able to look at the Unity editor, including seeing the scene/game view, while stopped at a breakpoint in the MonoDevelop debugger? I don’t know how feasible this is, but that would be very useful! Even a non-interactive snap-shot of the game window before the break would quite useful.

I use Mono Development for debugging and this sounds like a nice set of improvements.

Please can you keep the sln/csproj as an option so that us vim users can continue to happily use omnisharp-vim for smart code completions? And of course publish the REST API so the vim community can eventually plug into that way of doing thing also.

Any improvements to MonoDevelop are highly welcomed by our studio, are you currently investigating the possibility of adding conditional breakpoints or variable/data change interrupt breakpoints?

I honestly have no problem using monoDevelope but improvements are welcomed. I love the idea of writing my scripts outside the editor which gives me a whole lot of room for the game design which just feels awesome and natural. Thanks Unity ;)

I wish I could say I’m happy about this announcement, but I’m honestly not. I’m so not sure having such an intimate relationship with third-party editors like Mono-Develop and now Visual Studio on windows, is a good idea. My Reasons:

1.) Bloat: The current version of Mono Develop that ships with Unity is 333.5 MB (OSX version). Correct me if I’m wrong but I’m pretty certain most devs don’t use a much of the extra features that mono develop ships with.

2.) It’s not UnityLike: Unity prides itself in it’s Elegant UI. Mono develop in recent times has tried to be that but is still not quite there yet. It still does feel like a completely different app. The User Experience is not necessarily bad. It’s just very different from what we’re used to in Unity.

3.) Fragmentation: Unity now ships with Visual Studio on windows. It now has to focus on getting integration right on that front as well in addition to mono develop. Sounds like a wasteful use of dev resources.

4.) Integrated IDEs: Devs are buying ‘Script Inspector 3’ for an extra $55. If that does not tell you Mono develop isn’t well suited for the job, I’m not sure what does. in fact I suggest Unity acquire it and use that as the default. Double clicking a Unity script for another application to open just feels unnatural.

5.) Ownership: Unity should work more towards the ownership of the tools that come out of their box. By all means allow third-parties to integrate but leave them as third-parties. Owning most of the technology inspires confidence amongst your users. Because we know if there is a lingering bug we do not have to wait for some third-party to fix it.

6.) Debugging: The way script debugging in unity works right now is a pain. The scene being debugged is in one application (Or device) and the script is in another. Let’s not forget the profiler by the way, which sits in a different window from the script. Think of the pain devs go through when switching windows trying to find script bottlenecks. Basically if you don’t have 2 monitors, you’re screwed.

7.) Everything else is inside the editor: We call Unity an integrated dev. environment. This is almost true. Even the somewhat controversial service-oriented features are now build into the editor. Why is the one part of the tool where Devs spend quite a bit of time sitting outside the editor?

I could go on and on, but I kinda feel like this is a debate you guys are having in-house so I’ll just leave it to your better judgement.

Regards,
K

If Select All (Command-A) works instead of executing misc. random commands, I will weep salty tears of joy! :)

(Sometimes I want to analyze or Find-and-Replace my code in another app, or copy an old script into a new empty one. Select All—Copy would be awesome!)

Yes you can Selected All with Cmd+A, it is also possible to see the value of Enum types when debugging!

Do you mean the interface language in Chinese?
Or the programming language in Chinese, which is not possible…?

They’ve already said on the forums that Unityscript has no real future so I doubt that’s going to happen.

Would be just brilliant if monodev would run properly without the user beeing an admin on the klient aswell. It’s been a bummer for years in school environments…

This sounds very useful. Smart move using REST it would be awesome to be able to write editor extensions that could communicate with external apps, Adobe-CEP like extensions bring to mind all kinds of integration ideas.

Awesome, updated MonoDevelop! Thanks also for fixing Visual Studio integration in 5.2.2 !
Can’t wait for 5.3 to try Multi-scene Editing, IAP, SSRR and Host Migration! . . .

Thanks for the news! Excited to see how this update will pan out.

I have been using Script Inspector 3 for about 2 months now, and feel that its a better script editor than Mono give or take a few issues with UnityScript. Are there any plans of Unity moving in a similar direction?

Does this mean still custom MonoDevelop builds and not a plugin? If so, please work on the plugin direction for the future

Please also support adding/removing compilation Defines. Every time I edit the Compilation Defines in Unity PlayerSettings my Projects get rebuilt.

Please help the UnityVS Guys (Microsoft, right? :) ) to integrate this into their Visual Studio Extension.

Thank you for listening to the Feedback and improving the coding experience! :D

Thanks for the update :)

I’m using the new MonoDevelop for quite some time now (starting with alpha and now with the beta). It’s a lot better than what we used to have ! (BTW i am on OSX so i can’t use Visual Studio).

Out of curiosity – what did you choose REST as the communication layer, as opposed to, say, named pipes (e.g: cross process communication on the same box) ?

Will it be possible to send custom data via REST? Like messaging between MonoDevelop plugin and Editor script?

Comments are closed.