最近在将一款現有的遊戲向Windows Phone平台移植,暫時完成了一個小階段,做一個總結。
開發環境:
- Windows 8.1 系統及以上,願意的話,用Windows 10 嘗鮮也可以。
- 微軟賬号,用于在建立Windows Phone項目時擷取開發證書,免費。http://signup.live.com/
- 微軟開發賬号,用于上傳應用到商店, http://dev.windowsphone.com/ ,19刀永久管用。
- Visual Studio 2013 ,如果用旗艦版,則自帶 Windows Phone 8.1 的 SDK,盡量用最新的update吧。
- Windows Phone SDK,如果用的是Express的VS2013,則需要單獨下載下傳Windows Phone 8.1 的 SDK, https://dev.windowsphone.com/en-us/downloadsdk
- Unity ,http://unity3d.com/unity/download,盡量下載下傳最新的穩定版本吧。
- Windows Phone 8.1 裝置,遊戲相對來說更吃記憶體,盡量買個1G以上記憶體的機器,比如636,638。
基礎理論:
- Mono是一個開源的跨平台架構,其目标是實作一個開源的.NET架構,稱之為Mono Runtime,開發語言主要但不隻是C#。
- Unity的底層是用C++實作的,然而嵌入了Mono Runtime做為其腳本運作引擎。
- Unity嵌入的Mono是其定制過的,也就是說,它與官方的Mono并不是完全一緻的,其目前的Mono版本是2.6,并且不開源。
- Unity在Windows Phone 8.1上的運作時主要是Windows Runtime,和MS自己的.NET子集,以及可以相容于這部分.NET子集的Mono。
- 官方Mono,Unity的Mono,MS的.NET子集。這三者之間有交集,然而移植過程中主要處理的是他們的非交集部分。
- 不能直接讓Unity的Mono不加修改就跑在Windows Phone上,而可以跑在IOS/Android上,可以說是一個恥辱。
移植過程:
- 用Unity打開現有遊戲工程,然後File -> Building&Settings -> Switch Platform,選擇Windows Store下的 Phone 8.1。這個步驟後Unity會将條件編譯符号改成Unity_WP_8_1
- 設定 Player Settings,主要是設定Manifest檔案,值得注意的是編譯選項。
- 選中 Unity C# Projects 和 Development Build,點選Build,建立一個檔案夾(比如WP81),以生成VS2013可以打開的項目。
- 如果生成成功,那麼用VS2013打開新生成的sln,繼續用VS2013 Build。
- 如果編譯成功,那麼可以将生成的遊戲部署到手機上進行測試。
- 如果能夠和其他平台一樣正常運作,那麼就可以将遊戲上傳到Windows商店了。
當然了,除了第1步會很順利(根據遊戲中Assets的數量,可能要花很長時間),而取決于不同遊戲,第2~6步都會有很多麻煩和困惑。本節暫不深入。
接下來會繼續總結和深入過程中的具體細節。
建立了一個專門讨論Unity->WP移植的Q群:307409538,暫時不接納圍觀新手,入群者必須有實際的遊戲項目。