Unity3D遊戲開發初探—1.跨平臺的遊戲引擎讓.NET程序員新生

1、Unity3D平臺簡介

  Unity是由Unity Technologies開發的一個讓輕鬆建立諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的 專業遊戲引擎。Unity相似於Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發環境爲首要方式的軟件其編輯器運行在Windows 和Mac OS X下,可發佈遊戲至 Windows、Mac、Wii、iPhone、Windows Phone 8和Android平臺。也能夠利用Unity web player插件發佈網頁遊戲,支持Mac 和Windows的網頁瀏覽。它的網頁播放器也被Mac widgets所支持。

  據不徹底統計,目前國內有80%的Android、Iphone手機遊戲使用Unity3D進行開發,好比著名的手機遊戲《神廟逃亡》就是使用Unity3D開發的,也有《縱橫時空》、《將魂三國》、《爭鋒online》、《萌戰記》、《絕代雙驕》、《蒸汽之城》、《星際陸戰隊》、《新仙劍奇俠傳Online》、《武士復仇2》、《UDog》等上百款網頁遊戲都是使用Unity3d開發。html

  固然,Unity3D不只只限於遊戲行業,在虛擬現實、工程模擬、3D設計等應用方面也有着普遍的應用,國內使用Unity3D進行虛擬仿真教學平臺、房地產3維展現等項目開發的公司很是多,好比綠地地產、保利地產、中海地產、招商地產等大型的房地產公司的三維數字樓盤展現系統不少都是使用Unity3D進行開發。好比《Miya家裝》、《飛思翼家裝設計》、《狀元府樓盤展現》等等。程序員

  赤果果的數據->國內53.1%的人使用Unity3D進行遊戲開發,有80%的手機遊戲使用Unity3D開發,跨多平臺(IOS、Android、Windows
Phone、Windows、Flash、XBOX360、PS三、Wii等)遊戲引擎,能夠開發2D、2.5D、3D遊戲。appstore手機上有1500+款用Unity3D開發的遊戲,而Unity3D語言就有C#(還有JavaScript,但不是原生的JavaScript)。web

  所以,對於咱們.NET程序員,若是說Mono讓咱們進入了跨平臺服務器的Web開發時代,Unity3D則讓咱們遇上了移動手遊開發的浪潮,不至於掉隊甚至錯過這波浪潮。我又想起園子裏的一位大牛—張善友先生寫的一篇博文的標題:如今是C#程序員最好的時代。是啊,感謝開源社區的大牛們,咱們擁抱着Mono,還迎來了Unity3D數據庫

2、Unity3D IDE簡介

  Unity(http://unity3d.com/)提供了免費的下載,目前最新版本是4.3.4f3,安裝包大概1個G左右。目前提供了收費的專業版和免費的版本以及30天的試用版,通常咱們學習者使用免費版足矣。固然,在大天朝各類破解補丁、註冊機是能夠找到的,不過涉及到版權問題這裏不進行討論,請自行百度或Google搜索。下載完成後,便可安裝,安裝步湊就是各類下一步(Next),中途會提示你是否須要安裝幾個組件:Examples、Web Player以及Mono Developer,通常都全選上,固然也能夠不選。Mono Developer是個好東西(可是智能性上趕不上強大的VS),推薦裝上。設計模式

  安裝完成而且註冊(或者破解)以後,你就能夠進入如下所示的界面了。恭喜你,你已經進入Unity3D的學習征途,固然,還僅僅是第一步。這裏須要提示一下:在新建Unity3D項目的時候,必定要放在非中文命名的路徑中!另外,每次在建立新項目的時候,Unity3D都會本身重啓一下,這是正常現象哈,不要覺得你的Unity3D安裝沒成功。服務器

3、第一個Unity3D程序-Hello Cube!

  (1)在模型對象區域中的Hierarchy中Create一個Cube立方體,在Inspector中修改它的Position XYZ均設置爲0;網絡

  (2)Unity3D場景默認是木有光照源的,所以須要在Hierarchy中Create一個Directional light(平行光);架構

  (3)修改Main Camera(攝像機看到的就是屏幕看到的)的Position爲(0,1,-5),這樣看起來清楚一點;app

  (4)在項目資源管理器中Create一個C# Script,命名爲CubeControl。建立完成以後,雙擊該腳本文件,自動進入MonoDeveloper(默認是MonoDeveloper,固然咱們也可使用Visual Studio做爲默認編輯器)。 編輯器

  (5)在MonoDeveloper中,寫入如下代碼。這個代碼主要是判斷用戶的按鍵操做,若是是上、下、左、右操做,則對指定的對象進行指定方向的翻看。(主要寫在Update方法中,程序的每一幀都會調用Update方法,1秒默認30幀

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class CubeControl : MonoBehaviour {
 5 
 6     // Use this for initialization
 7     // Unity3D中經常使用的幾種系統自調用的重要方法
 8     // 首先,咱們有必要說明一下他們的執行順序:
 9     // Awake--Start--Update--Fixedupdate--Lateupdate--OnGUI--Reset--onDisable--onDestory
10     // Start僅在Update函數第一次被調用前調用
11     void Start () {
12     
13     }
14     
15     // Update is called once per frame
16     void Update () {
17         //按鍵盤上的上下左右鍵能夠翻看模型的各個面[模型旋轉]
18         //
19         if(Input.GetKey(KeyCode.UpArrow))
20         {
21             transform.Rotate(Vector3.right*Time.deltaTime*10);
22         }
23         //
24         if(Input.GetKey(KeyCode.DownArrow))
25         {
26             transform.Rotate(Vector3.left*Time.deltaTime*10);
27         }
28         //
29         if(Input.GetKey(KeyCode.LeftArrow))
30         {
31             transform.Rotate(Vector3.up*Time.deltaTime*10);
32         }
33         //
34         if(Input.GetKey(KeyCode.RightArrow))
35         {
36             transform.Rotate(Vector3.down*Time.deltaTime*10);
37         }
38     }
View Code

  (6)將保存後的CubeControl經過鼠標拖動到模型對象區Hierarchy中的Cube上進行腳本綁定。綁定腳本和對象以後,在Cube的屬性中會看到下圖所示。*PS:腳本須要對應到一個具體的遊戲對象纔有意義!

  (7)如今能夠預覽一下咱們的第一個程序了,點擊以下圖所示的播放按鈕,便可進入模擬器看到效果。這時,咱們經過按下鍵盤中的上、下、左、右鍵,Cube立方體會隨着咱們的按鍵翻轉。怎樣?麻雀雖小,可是五臟俱全吧,咱們的第一個Unity3D程序—Hello Cube就完成了。

  (8)接下來,若是按照正式項目的步湊的話就輪到發佈程序了。這裏咱們能夠體驗一下Unity3D強大的跨平臺能力,咱們這個Demo能夠發佈爲各類主流類型操做系統兼容的應用程序。經過點擊File-Build Settings,便可進入以下圖所示的發佈設置窗口界面。查看Platform列表,裏邊囊括了幾乎目前全部的操做平臺,也就是說咱們能夠實現一次開發,多平臺運行,爽哉!

  (9)這裏咱們作個測試,發佈一個Windows平臺的典型exe程序和一個Web平臺的Flash程序來體驗一下。(個人筆記本沒有安裝Android模擬器,更不要說Mac模擬器了,因此,你懂的)

  

  (10)足夠細心的你相信已經發現這個Cube立方體的棱角有鋸齒,這是由於在默認環境下,抗鋸齒這個屬性是設爲Disabled(禁用)的。所以,咱們能夠點擊Edit→Project Settings→Quality,將Anti Aliasing這個屬性選爲2x Multi Sampling(可選值爲2x Multi Sampling、4x Multi Sampling以及8x Multi Sampling,值越大越平滑,可是會佔用更多的系統資源,開發調試階段通常選擇爲Disabled,固然,若是你的機器足夠好,選擇4x或8x也是一個不錯的選擇)。

 4、原諒我是「外貌」協會—酷炫場景導入

  相信你們都玩過不少遊戲,對於遊戲中那些宏大逼真的遊戲場景應該是歷歷在目。因此,對於咱們這種對於遊戲場景外貌要求比較高的「玩家」(不過,我不多玩網絡遊戲,目前一直在玩的只有Pro Evolution Soccer實況足球),上面那個一點場景都木有的遊戲對咱們來講沒有一點吸引力!所以,對於外貌協會的挑剔客觀,Unity3D支持3Ds Max的FBX模型文件直接導入,爲咱們的遊戲「整容」,一秒變白富美!

  (1)從網上下載一個FBX模型文件;(這個網上不少,請自行百度或Google。我這裏使用的是一個希臘聖殿的場景FBX文件,下載地址見本文底部。)另外,這裏須要提醒一下:若是下載下來的FBX文件以中文命名,請將其改成英文命名,而且最好不要有空格。例如,我這裏將其原文件名「希臘聖殿」改成TempleScene。

  

  (2)將下載的FBX模型文件拖動到Unity3D中的資源管理器區域中,完成後在資源管理器中會出現該模型文件圖標;

  (3)將上圖中帶有播放按鈕的TempleScene.FBX文件拖動到Scene(遊戲場景視圖)中,因而一秒變爲希臘聖殿的場景!

  (4)這時咱們稍微調整一下Main Camera和Cube的Position就能夠瀏覽一下在聖殿場景下的Hello Cube程序了。

  (5)可是咱們發現,雖然立方體能夠隨着咱們的鍵盤方向操做翻轉,可是場景一直停在一個固定的角度。因而乎,咱們想讓場景也隨着立方體的翻轉而轉動,咱們該怎麼來作呢?這就涉及到咱們剛剛所寫的CubeControl腳本了,在Unity3D中腳本是須要和對象綁定才能正確運行的。所以,咱們只須要把CubeControl和剛剛導入的這個聖殿的場景對象綁定一下便可。因此,這裏從資源管理器區域中把CubeControl拖動到TempleScene處就OK了。最後,能夠經過查看TempleScene的屬性觀察是否綁定上了腳本,以下圖所示。

  (6)最後,經過點擊播放按鈕在模擬視圖中能夠查看。這下,只要咱們按下鍵盤上的方向鍵,場景和立方體會一塊兒轉動,爽吧!

PS:通常遊戲公司裏邊會有這麼幾類角色: 主程(主程序員)、 主美(主美工師)以及策劃、測試和客服。There is no doubt that 咱們的目標是主程,精通一門開發語言,熟悉遊戲腳本與服務端開發,對什麼HTTP協議、Socket通信等原理都懂一些,還了解一些經常使用的架構和設計模式,可以熟練操做SQL語言與數據庫交互。可是,咱們也不是神,不能啥都學啥都會,遊戲場景設計這塊是主美的飯碗,因此咱們只須要將美工設計好的場景模型加入遊戲中,咱們爲遊戲對象寫腳本,寫交互代碼讓遊戲真正動起來便可!

5、小結

  Unity3D是一個強大的遊戲引擎平臺,咱們能夠很方便地在其上編寫一些簡單的遊戲程序。經過和美工的配合,咱們徹底能夠開發出很酷炫的遊戲。並且更爲重要的是:

  1.Unity3D能夠基於Mono實現跨平臺,能夠一次開發,多處運行;

  2.Unity3D可使用C#編寫腳本,衆多的.NET程序員們能夠快速學習上手,遇上手機遊戲的浪潮尾巴;

  後面咱們會繼續初探Unity3D,實現一個地球圍繞太陽轉的Demo、爲遊戲添加地形、理解一下物理引擎、GUI,最後實現一個簡單的打箱子游戲來結束此次初探之旅。另外,本人就一苦逼的計算機專業學生,寫博文沒多久,最近興趣起來了,就寫的多了一點,內容若有錯誤敬請諒解。博客內容藉助於如下的參考文獻資料,站在巨人的肩膀上,咱們能夠看得更遠,在此,謝謝這些巨人們!

參考文獻與資料

  (1)百度Unity3D百科:http://baike.baidu.com/link?url=jB3DpXJ9OQ39FEJB8qLEDfkMZL_dVBw2AFVPTICOACW6POmxt7EWaIAhhgiAre5mIfHRfxv5uGT82s_vLL2zPK

  (2)傳智播客Unity3D公開課:http://net.itcast.cn/subject/Unity3D/index.html

  (3)yuxueliang,《Unity3D入門之Unity3D介紹以及編輯器的使用(1)》:http://www.cnblogs.com/yxlblogs/p/3486027.html

  (4)蘇若年,《初始Unity3D開發3D遊戲》:http://www.cnblogs.com/dennisit/archive/2013/05/25/3098227.html

附件

  (1)希臘聖殿場景FBX模型文件:http://pan.baidu.com/s/1eQCB4mY

 

相關文章
相關標籤/搜索