共用方式為


本文章是由機器翻譯。

Unity

使用 Unity 及 C# 開發您的第一款遊戲

Adam Tuliper

下載代碼示例

作為軟體架構師,我已經寫了許多系統中,反向-­工程的本機代碼的惡意軟體,和一般能弄出來的代碼一邊的東西。 製作遊戲的時候,不過,我有點迷路了,從哪裡開始。 我做了一些本機代碼的圖形程式設計在 Windows 的早期,和它不是一個有趣的經驗。 我然後開始 DirectX 開發,但意識到雖然它是功能非常強大,它似乎是想做什麼太多的代碼。

然後,有一天,我決定進行實驗與團結,我看見它能做一些神奇的事情。 這是統一的將涵蓋的基本內容及其體系結構四部分系列的第一篇文章。 我將展示如何創建 2D 和 3D 遊戲,以及最後,如何為 Windows 平臺建設。

團結是什麼

團結是一個 2D/3D 引擎和框架,為您提供了一個系統為 2D、 2.5 D 和 3D 設計遊戲或應用程式的場景。 我說遊戲和應用程式,因為我見過不只是遊戲,但訓練模擬器,第一次連線回應程式的應用程式,和其它業務為中心的應用程式開發與需要進行交互與 2D/3D 空間的統一。 統一,可以與它們進行交互,通過不僅代碼,也可視元件,並將它們匯出到每個主要的移動平臺,以及很多更多 — — 免費。 (也是 pro 版本,很好,但它不是自由。 你可以做免費版令人印象深刻的金額)。團結支援所有主要的 3D 應用程式和許多的音訊格式,和甚至理解 Photoshop.psd 格式,所以你可以只是放.psd 檔到一個統一的專案。 統一允許您導入和組裝的資產,編寫代碼來與您的物件進行交互、 創建或導入使用的一種先進的動畫系統,以及更多的動畫效果。

作為圖 1 指示,團結已做的工作,以確保跨平臺的支援,並且可以更改平臺從字面上的一次按一下,雖然為了公平起見,那裡通常是一些最小的努力所需,整合與每個商店應用程式內購買。

平臺支援的統一
圖 1 平臺支援的統一

也許最強有力部分是統一的統一資產存儲庫,可以說是統一的最好的資產市場在博彩市場。 在裡面你可以找到你所有的遊戲元件需求,如藝術品、 3D 模型、 動畫檔為您的 3D 模型 (見 Mixamo 的含量超過 10,000 運動的存儲區),音訊效果和全部曲目、 外掛程式 — — 包括那些像可以説明與多個平臺支援多平臺工具組 — — 視覺的腳本系統,如進攻召集人和表現,先進的著色器紋理,粒子效果,和更多。 Unity 介面是完全腳本化,讓很多協力廠商外掛程式,將權利納入統一 GUI。 大多數,如果不是全部,專業的遊戲開發者從資產存儲庫,使用了多個包,如果你有有像樣的提供,你可以將其發佈那裡以及。

統一併不是

我猶豫來描述任何統一併不是因為有人挑戰,所有的時間。 然而,統一在預設情況下並不是一個系統,用來設計您的 2D 資產和 3D 模型 (除了地形)。 您可以把僵屍一堆成一個場景和控制他們,但你就不會統一預設工具中創建的僵屍。 在這個意義上,統一併不是像 Autodesk Maya 或 3DSMax,攪拌機或甚至 Adobe Photoshop 創造資產工具。 還有至少一個協力廠商建模外掛程式 (ProBuilder),雖然,這使得你能夠模型 3D 元件右內部團結 ; 用於創建 2D 平鋪的環境中,有 2D 世界產生器外掛程式如二維地形編輯器,您還可以設計從內統一使用他們的地形工具創建令人驚歎的景觀樹、 草、 山,與地形。 所以,再一次,我猶豫,建議對統一可以做任何限制。

微軟不在哪裡放入這? 微軟和團結密切合作共同努力確保偉大的平臺支援整個微軟堆疊。 Unity 支援 Windows 獨立可執行檔,Windows 應用商店的應用程式,Windows Phone Xbox 360 和 Xbox 一。

使用者入門

下載最新版本的統一,讓自己的兩個按鈕的滑鼠,用一個可點擊的滾動輪。 那裡是註冊的免費模式或 pro 可以單個下載。 你可以看到在版本之間的差異unity3d.com/unity/licenses。 編輯器,這是主要的統一介面,(包括 Surface Pro),Windows 上運行 Linux 和 OS X。

我會讓進入真正的遊戲開發與統一在下一篇文章中,但是,首先,我將探討統一介面、 專案結構和體系結構。

體系結構和編譯

團結就是本機的基於 c + + 的遊戲引擎。 你寫的代碼在 C# 中,JavaScript (UnityScript),或更頻繁,建築物條例執行處少。 您的代碼,不統一引擎代碼,在單聲道或 Microsoft.NET 框架,這是只是-在-即時 (JIT) 編譯 (除了 iOS 的單聲道到使用前面的時間 [AOT] 編譯的本機代碼的編譯和不允許 JIT 代碼) 上運行。

團結讓您在 IDE 中測試你的遊戲,而無需執行任何類型的出口或建立。 在統一中運行的代碼時,您使用單聲道版本 3.5,其中具有 API 持平,.NET Framework 3.5 CLR 2.0 的相容性。

您通過按兩下一個代碼檔在專案視圖中,將打開預設跨平臺的編輯器,單聲道編輯您的代碼在統一­發展。 如果您願意,您可以配置Visual Studio作為您的編輯器。

你用 MonoDevelop 調試或者使用協力廠商外掛程式為Visual Studio,UnityVS。 不能使用Visual Studio作為一個調試器沒有 UnityVS,因為當你調試你的遊戲,你不調試 Unity.exe,你在調試一個虛擬環境內部團結,使用軟的調試器已發出的命令,並執行操作。

若要調試,您啟動 MonoDevelop 從統一。 MonoDevelop 具有一個外掛程式,打開一個連接返回到統一調試器和調試後你問題的命令對它 |附加到進程在 MonoDevelop 中。 使用 UnityVS,你反而回統一連接Visual Studio調試器。

當你第一次打開了團結時,你看到在中所示的專案對話方塊圖 2

團結專案嚮導
圖 2 團結專案嚮導

在專案對話方塊中,您為您的專案 (1) 指定的名稱和位置。 您可以導入到您的專案 (2) 任何套裝軟體,雖然你不需要去檢查什麼離開這裡 ; 提供的清單是僅作為一種方便。 您也可以稍後導入包。 套裝程式是一個.unitypackage 檔,其中包含預先包裝的資源 — — 模型、 代碼、 場景、 外掛程式 — — 任何東西你都可以封裝的統一 — — 您可以重複使用或分發它們很容易。 Don不檢查在這裡下車的東西,如果你不知道它是什麼,雖然 ; 您的專案大小將有時會大幅增長。 最後,您可以選擇 2D 或 3D (3)。 此下拉清單中是相對較新的團結,沒有重大 2D 遊戲工具直到最近。 預設值設置為 3D 時,青睞一個 3D 的專案 — — 典型的統一行為,因為它已久了,所以不需要任何特別一提。 當選擇時 2D 時,統一變動幾個看似小 — — 但主要 — — 事情,我會掩護在 2D 後來在這一系列文章。

此清單被填充從.unitypackage 檔在某些地點在您的系統 ; 統一安裝提供了一把。 任何您從統一資產存儲庫下載還之際,一個.unitypackage 檔和緩存在本地對您的系統在 C:\Users\< 你 >\AppData\­Roaming\Unity\Asset 存儲。 這樣,它將顯示在此清單中一旦它存在於您的系統上。 你可能只是按兩下任何.unitypackage 檔,它將導入到您的專案。

我繼續的統一介面,就會向前從在對話方塊中按一下創建圖 2 所以創建了一個新的專案。 預設的統一視窗佈局所示圖 3。.

預設統一視窗
圖 3 預設統一視窗

這裡是你會看到:

  1. 專案:在您的專案中的所有檔。 你可以拖放和從資源管理器進入統一將檔添加到您的專案。
  2. 場景:當前打開的場景。
  3. 層次結構:場景中的所有遊戲物件。 請注意這個詞的遊戲物件的使用和遊戲物件下拉清單功能表。
  4. 檢查員:在場景中的所選物件,元件 (屬性)。
  5. 工具列:到最左邊是泛,移動,旋轉,規模和在播放,暫停,提前幀的中心。 按一下播放戲劇附近立即無需執行單獨的遊戲生成。 暫停暫停比賽,並提前幀運行它一幀在一段時間,給你調試管制非常嚴格。
  6. 主控台:此視窗可以變得有些隱藏的但它顯示您編譯、 錯誤、 警告和等等的輸出。 它還顯示調試消息從代碼 ; 例如,Debug.Log 將顯示其輸出在這裡。

重要提的是遊戲選項卡在場景選項卡。 此選項卡啟動時按一下播放你和你的遊戲開始在此視窗中運行。 這就所謂播放模式,它給你一個操場測試你的遊戲,和甚至可以讓你對遊戲進行現場更改,切換回場景選項卡。 要非常小心在這裡,雖然。 雖然強調了播放按鈕,你是在播放模式下,當你離開它,任何更改你雖然在劇中模式將會丟失。 我,和我已經說過話,只是大約每個統一開發人員失去了的工作這方式,所以我改變我的編輯的顏色,使它明顯,當我在播放模式通過編輯 |首選項 |顏色 |攻擊性影響色調。

關於場景

一切都在你的遊戲運行在一個場景中存在。 當您打包你的遊戲的平臺時,由此產生的遊戲是集合的一個或多個場景,再加上任何平臺-­您添加的相關代碼。 你可以有盡可能多的場景,如你想要在一個專案中。 一個場景可以被認為是一個水準在遊戲中,雖然你可以有多個級別在一個場景檔中只是將球員的攝像頭移動到場景中的不同點。 當您從資產存儲庫下載協力廠商套裝軟體或甚至樣品的遊戲時,你通常必須找個場景檔中您要打開的專案。 場景檔是包含各種有關的當前場景和其屬性在專案中使用的資源的中繼資料的單個檔。 它是重要的是通過發展過程中,按 Ctrl + S 經常保存一個場景,就像使用任何其他工具。

通常情況下,統一將打開的最後一個場景,你一直在雖然統一打開一個專案時,有時它會創建一個新的空場景,你得去你專案資源管理器中查找的場景。 這可以是很困惑,新使用者,但重要的是要記住是否你碰巧打開你的最後一個專案,想知道你所有的工作在哪裡去了 ! 放鬆點,你會發現在您在您的專案中保存場景檔的工作。 您可以搜索為您通過按一下圖示的專案中的所有場景都表明在圖 4 對場景和過濾。

濾波的場景,在專案中
圖 4 濾波的場景,在專案中

在場景中,你不能看到任何東西沒有相機,你不能聽到任何東西沒有音訊攔截器元件附加到一些遊戲物體。 不過,請注意,任何新的場景,總是統一創建音訊攔截器元件已經在它的觀景窗。

專案結構和導入的資產

統一的專案並不像Visual Studio專案。 你不要打開一個專案檔案或甚至一個解決方案檔,因為它不存在。 您指向一個資料夾結構的統一,它會打開一個專案所在的資料夾。 專案包含資產,圖書館,ProjectSettings,和 Temp 資料夾,但只有一個,在介面中顯示資產資料夾,你可以看到在圖 4

資產資料夾包含您的所有資產 — — 藝術、 代碼、 音訊 ; 每一個檔,你帶到您的專案在此處。 這始終是在統一編輯器中的頂級資料夾。 但只有在統一介面中,永遠不會通過的檔案系統進行更改。

庫資料夾是在本機快取中導入的資產 ; 它持有資產的所有中繼資料。 ProjectSettings 資料夾存儲從編輯配置的設置 |專案設置。 Temp 資料夾是在生成過程中用於從單聲道和統一的暫存檔案。

我想要強調直接進行更改只有通過統一介面而不是檔案系統的重要性。 這包括甚至簡單的複製和粘貼。 為你的物件編輯器中,通過統一跟蹤中繼資料所以使用編輯器進行更改 (在一些邊緣情況下)。 你可以拖放和從您的檔案系統到團結,雖然 ; 這只是正常的。

最重要的遊戲物件

幾乎一切都在你的場景是一個遊戲物件。 想想 System.Object 在.NET 框架中。 幾乎所有類型從它都派生。 相同的概念是如此的遊戲物件。 它是你團結的場景中的所有物件的基類。 中顯示的物件的所有圖 5 (及更多) 從一個遊戲物件中獲得。

在統一的遊戲物件
圖 5 在統一的遊戲物件

一個遊戲物件是很簡單的因為它涉及到檢查器視窗。 你可以看到在圖 6 空的遊戲物件被添加到現場 ; 請注意其屬性偵測器中。 預設情況下的遊戲物件有沒有視覺屬性除了統一視窗小部件顯示當您突出顯示該物件。 在這一點上,它是只是一個相當空的物件。

簡單的遊戲物件
圖 6 簡單的遊戲物件

遊戲物體有一個名稱、 一個標籤 (類似于您可以通過在 XAML 中 FrameworkElement.Tag 分配文本標記或標記在 Windows 表單),一層和變換 (大概最重要的所有屬性)。

變換屬性只是位置、 旋轉和尺度的任何遊戲物件。 統一使用左手座標系統,在其中你認為你的電腦螢幕座標的 X (水準),作為 Y (垂直) 和 Z (深度,那就是,請進來、 走出螢幕)。

在遊戲開發中是很常見的是使用向量,在以後的文章中,我會掩護多一點。 現在,它就足以知道 Transform.Position 和 Transform.Scale 是兩個 Vector3 物件。 Vector3 是只是一個三維向量 ; 換句話說,它都不比三個點 — — 只是 X、 Y 和 Z。 通過這些簡單的三個值,你可以設置物件的位置,甚至在向量的方向移動物件。

元件

通過添加元件,可以向遊戲物件添加功能。 您添加的一切都是一個元件和他們都顯示了在檢查器視窗中。 有 MeshRender 和 SpriteRender 的元件 ; 元件的音訊和相機的功能 ; 與物理相關的元件 (碰撞和剛體)、 粒子系統、 尋找路徑系統、 協力廠商的自訂群組件,和更多。 您可以使用腳本元件要分配給物件的代碼。 元件是什麼通過添加功能,類似于 thedecorator 模式在軟體發展中,僅得涼爽給生活帶來了你的遊戲物件。

我會將一些代碼指派給一個新的遊戲物件,在這種情況下簡單的多維資料集可以創建通過遊戲物件 |創建其他 |多維資料集。 我改名為敵人多維資料集,然後創建了另一個,有兩個多維資料集。 你可以看到在圖 7 我搬約-15 單位從其他,你可以通過工具列或 W 鍵一次物件上使用移動工具突出顯示一個多維資料集。

當前專案與兩個多維資料集
圖 7 當前專案與兩個多維資料集

代碼是一個簡單的類,發現一名球員,移動它向它的主人。 你通常做運動操作通過兩種方法之一:您將物件移動到新的位置每一幀通過更改其 Transform.Position 屬性,或者你對它應用物理力,讓照顧其餘的統一。

做每個框架的事情涉及到的方式略有不同的思維比說"移動到此點"。對於這個例子,我要將該物件移動一點每一幀,所以我有準確控制資訊移動到哪裡。 如果你寧願不調整每一幀,有做單函式呼叫動作,如免費提供 iTween 庫的庫。

我做的第一件事是用滑鼠右鍵按一下在專案視窗創建新 C# 腳本叫做 EnemyAI。 要將此腳本分配給一個物件,我只是將拖的指令檔從專案視圖到場景視圖或層次結構中的物件和代碼分配給物件。 統一照顧其餘。 就是這麼簡單!

圖 8 顯示敵人多維資料集分配給它的腳本。

用腳本分配給它的敵人
圖 8 用腳本分配給它的敵人

看一看在代碼圖 9 ,並注意公開變數。 如果你看在編輯器中,您可以看到我的公開變數出現在運行時重寫的預設值的選項。 這是很酷。 您可以更改在 GUI 中為基元類型,預設值並且你還可以公開公開變數 (不是屬性,儘管) 的許多不同的物件類型。 如果我拖放到另一個遊戲物體上的這個代碼,那代碼元件的完全獨立實例獲取具現化。 這是一個基本的例子,可使效率更高了,說,將一個剛體元件添加到此物件,但會保持它在這裡簡單。

圖 9 EnemyAI 腳本

public class EnemyAI : MonoBehavior
{
  // These values will appear in the editor, full properties will not.
  public float Speed = 50;
  private Transform _playerTransform;
  private Transform _ myTransform;
  // Called on startup of the GameObject it's assigned to.
  void Start()
  {
    // Find some gameobject that has the text tag "Player" assigned to it.
    // This is startup code, shouldn't query the player object every
    // frame. Store a ref to it.
    var player = GameObject.FindGameObjectWithTag("Player");
    if (!player)
    {
      Debug.LogError(
        "Could not find the main player. Ensure it has the player tag set.");
    }
    else
    {
      // Grab a reference to its transform for use later (saves on managed
      // code to native code calls).
      _playerTransform = player.transform;
    }
    // Grab a reference to our transform for use later.
    _myTransform = this.transform;
  }
  // Called every frame. The frame rate varies every second.
  void Update()
  {
    // I am setting how fast I should move toward the "player"
    // per second. In Unity, one unit is a meter.
    // Time.deltaTime gives the amount of time since the last frame.
    // If you're running 60 FPS (frames per second) this is 1/60 = 0.0167,
    // so w/Speed=2 and frame rate of 60 FPS (frame rate always varies
     // per second), I have a movement amount of 2*0.0167 = .033 units
    // per frame. This is 2 units.
    var moveAmount = Speed * Time.deltaTime;
    // Update the position, move toward the player's position by moveAmount.
    _myTransform.position = Vector3.MoveTowards(_myTransform.position,
      _playerTransform.position, moveAmount);
  }
}

在代碼中,我可以獲取對暴露在編輯器中的任何元件的引用。 我還可以將腳本指派到一個遊戲物件,每個都有它自己的啟動和更新方法 (和許多其他的方法)。 假設包含此代碼腳本元件需要有一個參考到的 EnemyAI 類 (元件),我可以簡單地問該元件:

public class EnemyHealth : MonoBehavior
private EnemyAI _enemyAI;
// Use this for initialization.
void Start () {
  // Get a ref to the EnemyAI script component on this game object.
  var enemyAI = this.GetComponent<EnemyAI>();
}
// Update is called once per frame.
void Update () {
  _enemyAI.MoveTowardsPlayer();
}

你在 MonoDevelop 或選擇您的代碼編輯器中編輯代碼,然後切換回統一後,您通常會注意到一個短暫的延遲。 這是因為統一背景編譯您的代碼。 您可以通過編輯更改您的代碼編輯器 (不是調試器) |首選項 |外部工具 |外部腳本編輯器。 任何編譯問題會出現在非常深的底部狀態列的 Unity 編輯器螢幕所以留心注意他們。 如果您嘗試運行您的遊戲與代碼中的錯誤,統一不會讓你繼續。

編寫代碼

在先前的代碼示例中,有兩種方法,開始和更新,以及 EnemyHealth 所繼承的 MonoBehavior 基類,可以讓您只需將那類分配到一個遊戲物件的類。 有很多中您將使用,該基類和通常幾個方法和屬性的功能。 方法主要有那些統一將調用如果它們存在於您的類中。 有少數可以得到調用的方法 (見 bit.ly/1jeA3UM)。 雖然有許多方法,與ASP.NETWeb 表單頁生命週期一樣,你通常使用很少。 這裡是最常見的代碼方法,在你的類,其中涉及到的 MonoBehavior 派生的類的事件的循序執行:

醒:這種方法稱為一次的每個物件,該物件第一次初始化時。 其他元件可能尚未被初始化,所以這種方法通常用於初始化當前遊戲物體。 總是應該使用這種方法來初始化 MonoBehavior 派生的類,不是一個建構函式。 和不要試圖查詢的其他物件在你的場景在這裡,因為他們可能還沒有被初始化。

啟動:在第一幀的物件的存留期,但在更新的任何方法之前調用此方法。 它可能看起來非常類似于清醒,但有的開端,你知道的其他物件都已初始化通過醒和存在在你的場景中和,因此,您可以查詢代碼中的其他物件很容易,就像這樣:

// Returns the first EnemyAI script component instance it finds on any game object.
// This type is EnemyAI (a component), not a GameObject.
var enemyAI = GameObject.FindObjectOfType<EnemyAI>();
// I'll actually get a ref to its top-level GameObject.
var enemyGameObject = enemyAI.gameObject;
// Want the enemy’s position?
var position = enemyGameObject.transform.position;

更新:這種方法稱為每一幀。 如何往往是,你問? 好吧,這完全是因人而異。 它是完全依賴于計算的。 因為您的系統總是在變化它的負載,它將呈現不同的東西,這幀率不同的每一秒。 您可以按統計資訊按鈕在遊戲選項卡中,當你進入播放模式,看看你當前的畫面播放速率,如中所示的時候圖 10

獲得統計資料
圖 10 獲得統計資料

FixedUpdate:這種方法稱為固定的數量的第二次,一次獨立的畫面播放速率。 因為更新調用不同數量的第二次,並且不是與物理引擎同步,它是通常最好是使用 FixedUpdate,當您想要的物件上提供武力或其他一些物理學相關的功能。 FixedUpdate 預設情況下被稱為每.02 秒,意味著統一還執行物理計算每.02 秒 (此時間間隔被稱為固定步長和開發人員可調節),這再一次,是獨立的畫面播放速率。

統一生成代碼專案

一旦您有您的專案中的代碼,統一在您 (這在統一介面中不可見) 的根資料夾中創建一個或多個專案檔案。 這些都是不統一引擎的二進位檔案,而是專案的Visual Studio或 MonoDevelop 在其中你會編輯和編譯您的代碼。 統一可以創造什麼可能看起來像很多單獨的專案,作為圖 11 所示,雖然每個人都有一個重要的目的。

統一創建專案
圖 11 統一創建專案

如果你有一個簡單的統一專案,你不會看到所有這些檔。 只有當你有代碼放入不同的特殊資料夾,他們得到創建。 中所示的專案圖 11 打破了只有三種類型:

  • 大會 CSharp.csproj
  • 大會-CSharp-Editor.csproj
  • 大會-CSharp-firstpass.csproj

對於每個專案,還有影印機­美食專案-vs 追加到它,用創建的程式集-CSharp-vs.csproj,例如。 如果Visual Studio就是您的代碼編輯器,可以將它們添加到匯出的專案從統一為特定于平臺的調試您的Visual Studio解決方案中,則使用這些專案。

其他的專案用於相同的目的,但有 CSharp 替換為 UnityScript。 這些都是簡單的 JavaScript (UnityScript) 版本的專案,將存在只當使用 JavaScript 中的遊戲,只有你團結如果您有您的腳本觸發這些專案要創建的資料夾中。

現在,您已經看到什麼樣的專案被創造出來,我將探討觸發這些專案和告訴你他們的目的是什麼的資料夾。 每個資料夾路徑假定它就在你的專案視圖中的 /Assets 根資料夾下面。 資產是永遠的根資料夾,包含您的所有資產檔它的下面。 例如,標準資產是實際資產/標準的資產。 通過四個階段來生成程式集運行生成過程為您的腳本。 在階段 1 中編譯的物件看不到那些在階段 2 中因為他們還沒有尚未進行編譯。 這是重要的是知道什麼時候 UnityScript 和 C# 混合在同一個專案。 如果你想要從 UnityScript 引用一個 C# 類,您需要確保在較早階段對其進行編譯。

第 1 階段包括運行時中的腳本的標準、 臨標準資產和外掛程式的資料夾,都位於下 / 資產。 這一階段將創建程式集-CSharp-firstpass.csproj 專案。

第 2 階段腳本是在標準的資產/編輯器、 臨標準資產/編輯器和插頭-ins/編輯器的資料夾。 最後一個資料夾為交互的腳本的意味與團結編輯器 API 的設計時功能 (Visual Studio外掛程式覺得和它如何增強圖形化使用者介面,這才運行在統一編輯器中)。 這一階段將創建程式集-CSharp-編輯器-firstpass.csproj 專案。

第 3 階段包括不是在編輯器資料夾內的所有其他腳本。 這一階段將創建程式集-CSharp-Editor.csproj 專案。

階段 4 包括的所有剩餘的腳本 (那些調用編輯器中,如 /Assets/Editor 或 /Assets/ 的任何其他資料夾內­Foo/編輯器)。 這一階段將創建程式集 CSharp.csproj 專案。

有一對夫婦的其他少使用資料夾,並不在這裡,涵蓋資源等。 而且還有編譯器正在使用的未決問題。 它是.NET 嗎? 它是單聲道嗎? 為的是.NET Windows 運行時 (WinRT) 嗎? 它是 Windows Phone.NET 的運行庫嗎? 圖 12 列出了用於編譯的預設值。 這是重要的要知道,尤其是對於基於 WinRT 應用程式因為每平臺可用的 Api 會發生變化。

圖 12 編譯變化

平台 遊戲程式集生成的 最後編譯執行的
Windows Phone 8 單聲道 Visual Studio .NET
Windows 市集 .NET Visual Studio/.NET (WinRT)
Windows 獨立 (.exe) 單聲道 團結-生成.exe + libs
Windows Phone 8.1 .NET Visual Studio/.NET (WinRT)

當您為 Windows 執行生成時,統一負責制作從你 C# / UnityScript/Boo 代碼 (Dll) 中生成的遊戲庫,包括其本機運行時庫的調用。 對於 Windows 應用商店和 Windows Phone 8,它將匯出Visual Studio解決方案,除了 Windows 獨立,在這統一生成.exe 和所需的.DLL 檔案。 當我蓋住建設為平臺,我將討論在系列中,最後一篇文章中的各種組建類型。 在低級別的圖形呈現由 DirectX 在 Windows 平臺上執行。

設計一個遊戲在統一中是一個相當簡單的過程:

  • 帶來你的資產 (圖稿、 音訊等等)。 使用資產存儲庫。 寫你自己。 聘請一位演出者。 請注意統一併在某些情況下要求安裝軟體來處理這些本機的 3D 格式,有對瑪雅人、 Cheetah3d、 攪拌器和 3dsMax,本機支援以及用.obj 和.fbx 常見檔案格式,以及工作。
  • 在 C# 中,JavaScript/UnityScript,建築物條例執行處,來控制你的物件,場景,編寫代碼並執行遊戲邏輯。
  • 在團結中測試。 將匯出到一個平臺。
  • 在該平臺上進行測試。 部署。

但等一下,我想要更多 !

這篇文章作為體系結構和在統一過程的概述。 我覆蓋的介面,分配代碼、 遊戲物件、 元件、 單聲道和.NET,加上更多的基礎知識。 這設置我們很好地為下一篇文章在哪裡我就會潛入正確組裝為一個 2D 遊戲遊戲元件。 因為我會做一個為期兩天統一學習事件晚夏,在微軟虛擬學院,照看。 手錶為當地區域學習事件在 unity3d.com/pages/windows/events


AdamTuliper 是與生活在陽光明媚的南加州的微軟高級技術福音傳教士。他是獨立遊戲開發,co admin 的橙縣團結 Meetup,和 pluralsight.com 作者。他和他的妻子都要有其第三個孩子,所以向他伸出雖然他仍有時間,就在 adamt@microsoft.com 或在 Twitter 上 twitter.com/AdamTuliper

感謝以下技術專家對本文的審閱:Matt紐曼 (潛科學工作室)、 羅德里格斯Jaime(Microsoft) 和 Tautvydas Žilys (統一)