(本文是 “Getting started on Windows Store with Unity” 文件的簡單中譯版本,出處為Unity官網中對 Unity 遊戲建置為 Windows Store/Windows Phone App 的四份正式文件其中之一)

入門: Windows Store與Unity

本文件將持續更新以提供最即時的資訊。若有此文件未能解決之處,請嘗試至Unity Windows Developer Forum中搜尋或發問: http://forum.unity3d.com/forums/50-Windows-Development

Unity 4.3 ,以及更新的版本,已讓移植Unity遊戲至 Windows Store變得更加容易

這份文件是為Unity開發人員所寫,提供他們將現有的Unity遊戲移植為Windows Store App所需要的概觀資訊。此文件並未包含所有技術細節,但它能指引您正確的方向並提供相關的外部連結,以獲取進一步的詳細資訊。

移植 (porting) 一個 Unity 遊戲至Windows Store遊戲

要開發、編譯您的Unity 遊戲並提交到 Windows Store ,您將需要

- Unity4.3: Unity免費版本或Unity Pro都可,兩者皆內建免費的 Windows Store Windows Phone add-ons 給所有的Unity開發者

-  Visual Studio: 您可以使用任何 Visual Studio SKU,包括免費的 Visual Studio Express版本若要移植至 Windows 8.1 將需要 Visual Studio 2013 ;若要到 Windows 8 則可以使用 Visual Studio 2012。這兩種版本可以在同一台電腦上一併安裝並執行

-  Windows 8.0 或更高的版本: 即便您未購買 Windows 8,您也可以在http://dev.windows.com 取得 90 天的免費評估版。如果您是在Apple的機器上執行 Mac OS X ,可以有幾種選項讓您選擇以執行Windows,例如Boot Camp, VMWare 或是Parallels等。若您的目標是 Windows 8.1,則您必須在 Windows 8.1 中開發。其實,我們建議的執行環境是在Windows 8.1上執行Visual Studio 2013,原因是這樣的環境可以讓您自由選擇要移植至Windows 8或是Windows 8.1。附帶一提的是,從 Windows 8.0 升級到 Windows 8.1 是免費的,而且可直接由Windows Store中進行升級

- Microsoft Account: Microsoft Account是免費的,可由以下網站申請 http://signup.live.com,有此 Microsoft 帳戶即可獲取免費的開發許可(Developer License)

-  Windows Store 帳戶: 這是在您要將遊戲上架至 Windows Store時的需求。您可選擇要註冊為個人或公司帳戶,一旦完成註冊後則可同時提交至  Windows Phone Marketplace。個人帳戶註冊費用為$19,公司帳戶為$99。(譯註: 學生身份或新創公司則可享有第一年免年費優惠,可分別至http://DreamSpark.com http://BizSpark.com 申請)

-  Windows 測試機: 您可以在所有執行 Windows 8.0/8.1 的任何設備上進行開發及測試,Visual Studio 內建的模擬器可以模擬諸如多點觸控、各種螢幕解析度等情境;但是,我們仍建議您在具有觸控及運行Windows RT ARM-based CPU)的實體機器上測試您的App。理想的選擇包含Surface RT Surface 2

 

移植概

要準備移植至Windows Store,您可由以下領域熟悉其流程

- 設計階段 — — Unity Editor

- 編譯階段 — — Unity Editor 生成 Windows Store App

- 執行階段 — — 執行 Windows Store App

 

設計階段 — — Unity Editor

您將繼續使用所熟悉的Unity編輯器來移植遊戲至Windows Store App,這會提升您的工作效率

在遊戲設計階段的程序是相同的,您在Unity編輯器內的Mono執行環境(run-time)中設計並執行您的遊戲。只有在您要編譯成 Windows Store專案時會注意到一些差別: Unity將使用Windows Store.NET core (核心)來進行編譯。這裡提到的.NET core.NET 的一個子集,因此,您可能會遇到一些編譯錯誤,其原因即來自於某些API存在於Mono的執行環境中,但並不存在於.NET core之中。若遇到這種情形您將得改寫程式碼使其能順利執行。移植技術的詳細資訊,請閱讀Porting tips for Windows Store with Unity這份文件(譯註,或參閱以下部落格文章的step-by-step解決方法: http://blogs.msdn.com/b/mengtsai/archive/2014/01/16/unity-game-to-windows-store-compile-error-missing-namespaces-classes.aspx)

一旦成功編譯為Windows Store專案後,您即可以直接使用 Visual Studio 打開所生成的 Windows Store解決方案並進行debug

另一個可能的差異,是發生在使用shadersgraphics功能的時候,原因是這兩項是硬體相依的功能;例如,若您在編輯器中使用PC的硬體功能設定,其硬體功能當然遠勝於ARM-based Windows RT 設備。而若要在設計階段時模擬實際的設備功能,請使用Unity的圖形模擬(Graphics Emulation- 位於Edit功能表)來選擇適當的目標平臺

Unity專案中包括 Windows Store程式碼

如果您有一些程式碼,是要在Windows Store環境下才執行,但在Unity Editor環境下不該被執行的話,可以使用 #if (UNITY_METRO & &!UNITY_EDITOR) 這個pre-processor指令。(譯註: Unity 4.3.3起,若要編譯為Windows 8.0請使用UNITY_METRO_8_0,若為Windows 8.1請使用UNITY_METRO_8_1http://unity3d.com/unity/whats-new/unity-4.3.3 )。這將確保程式碼僅在所生成的Windows Store App內執行。其中!UNITY_EDITOR 是在處理於Editor中執行File->Build Settings切換到 Windows Store App時的情境。另外,請注意在Unity編輯器中執行的程式碼是不能引用 Windows run-time (WinRT) APIWinRT API 包括了一些針對Windows 8/8.1平台的特別功能,如尋訪檔案系統及SkyDrive、使用動態磚(Live Tiles)Contracts等;要使用這些API的話,可以在建置為Windows Store專案中後,於Visual Studio中來實作以上項目。

編譯階段-Unity Editor 生成 Windows Store App

您將透過File -> Build Settings來切換您所要建置的遊戲執行平台:

image

您將看到右側有幾個新的選項,以下是關於這些選項的詳細資訊

 

選擇Windows Store的類型 (Type)

Type的下拉清單中您可以在 Direct3D11 XAML 之中作選擇,同時也可以在C# C++語言間作選擇。我們建議先選擇XAML ,這可讓你在所見即所得的 XAML UI 設計畫面中,快速建立啟始畫面(splash screen)、設定(Settings)等各項 UI 元件。若選擇Direct3D & C++ 會生成較底層的執行元件,會有最好的執行效能,但是會犧牲一些 UI 元件設計時的整合功能而拉長設計時間

有關這些選項的更多資訊,請參閱以下連結

- Developing Windows Store Games - 概述了 DirectX 平臺功能的文章

- Unlocking the Power of DirectX in Apps that use XAML - 解釋如何無縫整合 DirectX XAML

 

選擇 SDK

Unity 4.3 您可以選擇要生成 8.0 8.1 版本的Windows Store App

由於 Windows 8.1 已發佈,我們建議您選擇此為所有新遊戲的最新版本。然而,在本文件推出之時 (Nov 2013),仍有許多執行 Windows 8.0 的使用者。若要讓您的遊戲可以在8.08.1上皆能執行的話,您可以

- 直接生成一個 Windows 8.0 遊戲而不使用8.1的新功能。在此情形下您將以8.0的版本提交到Store,上架後不論是執行 8.0 8.1 的使用者將能夠安裝並執行它。或者:

-針對8.0 8.1生成兩個Visual Studio 專案。在這情形下您將提交兩個遊戲套件(packages)Store,任某版本作業系統上的使用者將只能看到其各自版本的遊戲這種方式的優點在於可在8.1的專屬套件上新增8.1的特別功能(Big Tile),缺點則是需要同時控管兩種版本。

 

更多資訊請見

Windows Store – What’s new or update in 8.1

Migrating Windows Store apps to Windows 8.1

 

Player Settings的設置和.Net 核心編譯

Player Settings選項中,你會發現右側多了許多設定的選項以生成您的 Windows Store方案。這些設定會出現在您的Visual Studio專案中的manifest設定檔中。您可以直接在此設定應用程式名稱、 預設logo圖示、所需要的平台功能等。

image

其中請注意一個重要的設定,在Compilation Overrides的下拉選單中,其預設值是”Use Net Core”

此預設值是要確保在編譯時,Unity中的所有scripts(但不包括 /Plugins 資料夾),都被編譯成.Net 核心設定檔。若您是做用C#的話這會是建議的設定。而如果您是使用 UnityScript (或是Boo)則將不能選擇.NET Core;這情形況Unity將使用Mono的編譯器,但仍然生成可通過Windows Store認證的assembly

應指出的是,在這個編譯的過程中(按下Build) 會忽略在 /Plugins 資料夾內的外掛程式及二進位檔案,也就是說即便您成功生成了Windows Store專案,您可能仍會在執行階段或上架Windows Store的驗證過程中遇到問題。

若要知道協力廠商的外掛程式是否相容於 Windows Store ,可以使用 Xamarin提供的線上工具免費掃描: http://scan.xamarin.com

 

 

 

 

 

Windows Store專案和 Visual Studio-開發流程

以上我們提到所有可能遇到的問題,請參閱 Windows Store Porting Techniques 這份技術白皮書的Getting your app to compile in Unity章節中(4~6),有更多如何解決 API 與相關錯誤的說明。 

一旦您已經解決了任何編譯時的錯誤,Unity將匯出一個專案檔,你將會使用 Visual Studio 打開、測試、執行並發布你的遊戲,亦即以下的兩個步驟

1.Unity生成專案。(File -> Build Settings,選擇Windows Store App -> Build)

2.Visual Studio 中編譯為可上架Windows Store的二進位檔案

 

值得注意的是,每次以 Unity生成專案的時候,你可以每次都選擇相同的資料夾,這樣並不會覆寫到任何已在Visual Studio中所作過的修改。Unity將只更新的以下資料夾及檔案:

1. 在您專案/Data資料夾

2. 專案中的reference assemblies

亦即,您可以直接於Visual Studio 改變專案、添加更多功能、更改manifest或設定檔,即便您之後在Unity中更改了遊戲內容也不會丟失這些在 Visual Studio 中所作的改變

另外要注意的是,如果您是更動了Unity的專案檔 (比如新增Plugins references),您將需要手動合併您的 Visual Studio 專案檔案

(本文僅譯至原文���的 Porting Overvew 章節)