2015年10月28日 星期三

MONODEVELOP-Unity未來計畫

作者:LUKASZ PACZKOWSKI
原文:http://blogs.unity3d.com/2015/10/22/monodevelop-roadmap/

正如我們之前所發佈過的Unity Roadmap中所述,我們將在12月,隨著Unity5.3版本推出MonoDevelop-Unity 5.9。MonoDevelop-Unity是為Unity量身訂做的MonoDevelop版本,MonoDevelop-Unity 5.9收錄了很多MonoDevelop 4.0.1的中改進和修正,目前是最新的穩定版本。


我們在開發MonoDevelop-Unity 5.9的時候為它增加了全新的工作流程。在target選項列表中,現在顯示有Unity targets,參見上圖頂部用橙色線框標出的部位。在點擊「Run」按鈕的時候,MonoDevelop-Unity 將自動連接到所選的target,媽媽再也不用擔心我要對著「Attach to Process」對話框點點點了!


現已可以從論壇中下載MonoDevelop-Unity 5.9 預覽版進行試用,歡迎大家在論壇中對我們的工作給出意見反饋!MonoDevelop-Unity 5.9可以直接替換掉Unity 4.6和Unity 5中附帶的MonoDevelop 4.0.1,最低的版本需求為:



. Windows系統:必須安裝有.NET 4.5。

詳見: http://go.microsoft.com/fwlink/p/?LinkId=397703

. Unity 4.6+:4.6.5p2 或更高版本
. Unity 5.0:5.0.2p2 或更高版本
. Unity 5.1+:5.1.0p1 或更高版本



修正腳本除錯功能

除了升級新版的MonoDevelop-Unity,我們也同時致力於修正和改進MonoDevelop-Unity與 Visual Studio Tools for Unity 中在腳本除錯方面的缺陷。


Unity5.3和Unity5.2.2中值得注意的腳本除錯功能的修正:


. 修復了在switch語句中步進會遇到的一些問題。
. 解決了在連續前進多次中斷點Unity會偶爾崩潰的問題。
. 修復了試圖在暫停後繼續步進時,會導致Unity崩潰的問題。
. 修正了單步跳過Resources.Load和其他用到序列化的Unity API函數時可能遇到的問題。
. 修復了試圖鑒別返回泛型數組的泛型方法時會遇到的問題。例如

GameObject.GetComponents<Component>()方法。


我們同時修復了一些MonoDevelop-Unity 5.9中特有的除錯缺陷。

MonoDevelop-Unity 5.9中值得注意的腳本除錯功能的修正:


. 修復了在開關斷點時會遇到的「The requested item has been unloaded」的問題。
. 修復了在鑒定枚舉時會遇到的「The requested item has been unloaded」的問題。
. 請從論壇中下載MonoDevelop-Unity 5.9 預覽版:



MonoDevelop和Unity的REST整合

目前,MonoDevelop-Unity和Unity是通過解決方案(.sln)和專案文件(.csproj)來進行整合的。


Unity在你每次增加、刪除、移動或重命名腳本文件的操作後,都需要修改專案的解決方案。所以,這一設定顯得並不理想。每當解決方案和專案文件被寫入到硬碟中時,MonoDevelop都需要重新載入它們。而更好的辦法是,每次更改Assets目錄中的文件或子目錄時,讓Unity與MonoDevelop直接通信,並使MonoDevelop進行相應的更新。


使用解決方案文件帶來的另一個問題是,我們並沒有在Unity和MonoDevelop中使用同一個C#編譯器來編譯您的腳本。這可能在MonoDevelop中導致與Unity不同的編譯錯誤和警告,在某些情況下,腳本可以在Unity中通過編譯卻在MonoDevelop中報錯,反之亦然。


為瞭解決這些問題,從而將Unity和MonoDevelop整合得更加緊密,我們正在研發一項新的功能,它將使得MonoDevelop和Unity能夠通過REST進行交流。這代表在實際操作中,MonoDevelop和Unity將通過一個network socket進行直接通訊,從而避免了不斷地生成解決方案和專案文件。


取而代之的是,MonoDevelop將根據Unity傳來的REST信息,在一個層級視圖中顯示您的Assets目錄。MonoDevelop中的Assets視圖將隨著Unity專案中Assets目錄的變化而變化。同時,我們甚至可以直接在MonoDevelop的Assets 視圖中增加、刪除、移動或重命名文件,這些操作會發送給Unity進行處理。一旦完成了這些文件操作,Unity將通知MonoDevelop Assets目錄的結構變化,使得MonoDevelop能夠據此更新其中的Assets 視圖。


下面的截圖展示了目前MonoDevelop中的Assets 視圖,我們可能會在最終發佈前進一步改進它。

MonoDevelop將通過REST服務在Unity中編譯您的腳本,然後在將編譯的結果反饋給MonoDevelop。上面截圖中的編譯結果就是由Unity傳達給MonoDevelop的。

REST服務並不局限於文件操作和腳本編譯。它也可以運用於任意暴露為REST endpoint的Unity功能。


在此,我們列舉出我們計劃在MonoDevelop和Unity整合中的功能:

. MonoDevelop和Unity之間免文件的專案同步方案。
. Assets 目錄中,文件增加、刪除、移動或重命名操作的雙向即時同步。
. 一致的編譯行為。總是在Unity中編譯您的腳本,然後在MonoDevelop中顯示Unity的編譯結果。
. 通過點擊MonoDevelop中的運行按鈕來進入play mode,或者綁定除錯器。


我們目前正緊鑼密鼓地進行著Unity和MonoDevelop的開發,兩者的REST整合將在Unity5.5中發佈。請持續關注Unity官方平台,我們將在接下來的幾個月中繼續分享更多的細節。

沒有留言:

張貼留言

關於我自己

我的相片
Unity台灣官方部落格 請上Facebook搜尋Unity Taiwan取得Unity中文的最新資訊