2015年1月30日 星期五

Unity4.6.2發佈,支援64位元iOS

作者:RALPH HAUWERT 原文連結
翻譯:小七、Deezy

Unity4.6.2已經發佈更新,這是Unity第一個支援64位元iOS的正式版本,採用了最新的IL2CPP技術

IL2CPP是Unity開發的一個新技術。它能極大提升專案中程式的校能,並且完美相容目前iOS架建的Mono-AOT解決方案。

我們可以使用IL2CPP將程式快速移植到新平台(例如WebGL),ARM64(64位元iOS系統架構)就是其中之一。使用Unity4.6.2設定選擇Universal同時支援32位及64位元iOS系統的應用。

大幅度性能提升

在IL2CPP專案的alpha和beta階段,我們也從Unity社群收到許多反饋,據測試過64位元iOS及IL2CPP的開發者報告,使用IL2CPP之後程式運作速度大大加快。

舉個例子,Andrew Witte在他的32位iOS設備上執行了RayTraceBenchmark(英文) ,得到如下數據:

當然我們最關心的還是場景,但從我們的效能測試中也可以看出顯著的性能改善。

下圖是用UnityScript編寫的JPEG解碼器執行耗時比較:


下面是一個Mandelbrot基准測試,它是測試WebGL平台上Unity性能的一部分,圖表顯示採用IL2CPP明顯的性能提升。


開啟64位元iOS移植之旅

在此新版本中,要讓你的專案支援IL2CPP底層及64位元iOS系統只需點幾下即可。在Player Settings的iOS標籤下有兩個列表:“Scripting Backend” 和 “Architecture”。


在scripting backend下拉列表中選擇IL2CPP來支援64位元iOS系統。預設Architecture使用的是“Universal”,這代表著包好專案會包含ARMv7和ARM64兩個格式。

如果現有專案中包含了第三方套件,你可能需要將它們升級到可以支援64位元iOS及IL2CPP的版本。我們已經與Unity插件開發商Prime31合作將他們所有的插件都升級到了iOS64。你可以在這裡下載。

以上步驟完成後,將你的專案匯出到Xcode。注意,由於IL2CPP會將程式轉換為C++再導入Xcode,你需要設定Configuration為Release,以便Clang編譯器最大程度地優化IL2CPP產生的程式碼。

在Xcode 6中的設定過程如下圖:


現在可以在設備上執行你的專案了。如果Player Settings中Architecture設定為“Universal”,那不管是32位還是64位元設備,APP會自動執行對應的程式碼。你可以在Unity開發者手冊中查看詳細的 iOS 64位元升級指南(英文)

注意事項:

  • WebRequest/WebClient API目前可存取但沒有具體功能。任何需要委托BeginInvoke/EndInvoke的非同步介接功能目前都未實現。我們會在後續發佈的補丁中解決這個問題。
  • 盡管其它委托方法都能正常工作但BeginInvoke/EndInvoke還不行。我們會在後續發佈的補丁中解決這個問題。
  • RakNet暫未移植到IL2CPP,如果專案或第三方函式庫引用到它會有問題。我們會在後續發佈的補丁中解決這個問題。
  • 使用IL2CPP時後台會一直執行Stripping。這可能需要採取措施來防止裁掉使用中的類別。
  • 如果將Stripping設定為micro-mscorlib,可能會導致類型缺失的編譯錯誤。我們計劃在以後的版本中使用IL2CPP時徹底禁用該選項。
  • Xcode編譯時間會變長,主要原因是需要編譯的代碼量過大。
  • 暫不支援Managed Debugger,但計劃會支援,同時,已經有開發者用Xcode Debugger成功完成除錯階段。
  • 使用IL2CPP腳本時開啟Xcode內建Profiler會導致編譯錯誤。

我們非常清楚上述的某些項目會導致移植過程延誤。自從Apple 10月20日宣布新上傳到App Store的iOS App都必須支援64位元系統以來,我們也馬不停蹄地幹活,以前所未有的速度處理Bug同時每週發佈更新版本。所有相關工作人員都盡心盡力解決每一個問題。

如果你的App已上架並非新App,我們建議你繼續使用原來的Mono流程來包ARMv7更新。Apple表示截至6月1日前都可以這樣做。然後儘快著手測試改成IL2CPP。

我們會持續每週發佈新版本,你可以在http://unity3d.com/unity/qa/patch-releases 跟蹤查看發佈的更新(英文)。

沒有留言:

張貼留言

著作人