http://unity3d.9ria.com/?p=22
編程
衆所周知,Unity3D是一個可以實現輕鬆創做的多平臺的遊戲開發工具,是一個全面整合的專業遊戲引擎。在現有的版本中,其強大的遊戲製做功能已經達到讓人瞠目結舌的地步。尤爲是它在3.0版本里面製做的那款第一人稱戰爭遊戲,畫質效果絲絕不遜色於當下十分流行的《穿越火線》、《戰地之王》等主流第一人稱射擊遊戲。下圖爲Demo中的顯示效果:
服務器
看到如此絢麗的效果,讓我立刻走進精彩的Unity3D世界吧!首先要下載Unity3D,在官網上就能夠完成。
Unity3D的官方網站:http://unity3d.com
Unity3D的下載地址:http://unity3d.com/unity/download/
下載好以後,必需要到官方網站上註冊一個郵箱,才能得到30天的試用時間。試用後若是您對這款軟件滿意,還能夠在購買後繼續使用。固然,若是您購買了Pro版本的Unity3D,將會得到更多的功能。
第一章Unity3D的基本界面介紹網絡
Unity3D的基本界面很是簡單,幾個窗口就能夠實現幾乎所有的編輯功能。主界面如圖1.1所示:
場景面板:該面板爲Unity3D的編輯面板;您能夠將您全部的模型、燈光、以及其餘材質對象拖放到當前場景中。構建遊戲中所能呈現的景象。
動畫面板:與場景面板不一樣,該面板是用來渲染場景面板中的景象的。該面板不能用做編輯,但卻能夠呈現完整的動畫效果。顯示的內容取決於場景攝像機的設置。
層次清單欄:該面板主要功能是顯示放在場景面板中的全部的物體對象。
項目文件欄:該面板主要功能是顯示該項目文件中的全部資源列表。除了模型、材質、字體等,還包括該項目的各個場景文件。
對象屬性欄:該面板欄會呈現出任何對象的固有屬性,包括三維座標、旋轉量、縮放大小、腳本的變量和對象等等。
場景調整工具:能夠改變您在編輯過程當中的場景視角、物體世界座標和本地座標的更換、物體的法線中心的位置,以及物體在場景中的座標位置,縮放大小等等。編輯器
菜單欄:接下來我重點介紹一下菜單欄。ide
菜單欄中包含有八個菜單選項:分別是File【文件】、Edit【編輯】、Assets【資源】、GameObject【遊戲對象】、Component【組件】、Terrain【地形】、Window【窗口】、Help【幫助】。函數
每一個菜單選項又有本身的子菜單,總結以下:工具
一、File【文件】佈局
名稱 |
說明 |
New Scene | 建立新的場景。就像是遊戲中的一個一個的場景同樣,Unity3D爲用戶提供了方便的場景管理,用戶能夠爲所欲爲的建立出本身想要的場景。而後再把每一個場景連接起來組成一個完成的遊戲。 |
Open Scene | 打開一個已經建立的場景 |
Save Scene | 保存當前場景 |
Save Scene as | 當前場景另存爲 |
New Project | 新建一個新的項目工程。用戶想要製做出本身的遊戲,第一步就是建立一個屬於這個遊戲的工程,這個工程是全部元素的基礎。有了工程以後,用戶就能夠在這個工程裏面添加本身的場景。 |
Open Project | 打開一個已經建立的工程 |
Save Project | 保存當前項目 |
Build Setting | 項目的編譯設置。在編譯設置選項裏面,用戶能夠選擇遊戲所在的平臺及對工程中的各個場景之間的管理。能夠添加當前的場景加入到工程的編譯隊列當中。其中的Player Settings選項中能夠設置程序的圖標,分辨率,啓動畫面等。 |
Build & Run | 編譯並運行項目 |
Exit | 退出Unity3D |
二、Edit【編輯】學習
名稱 |
說明 |
Undo | 撤銷上一步操做 |
Redo | 重複上一步動做 |
Cut | 剪切 |
Copy | 複製 |
Paste | 粘貼 |
Duplicate | 複製並粘貼 |
Delete | 刪除 |
Frame Selected | 選擇一個物體後,使用此功能能夠把視角調到觀察這個選中的物體上 |
Find | 在資源區能夠按資源的名稱來查找 |
Select All | 能夠選中全部資源 |
Preferences | 選項設置。對Unity3D的一些基本設置,如:選用外部的腳本編輯,皮膚,各類顏色的設置。以及一些用戶基本的快捷鍵的設置。 |
Play | 編譯並在Unity3D中運行程序 |
Pause | 中止程序 |
Step | 單步執行程序 |
Load Selection | 載入所選 |
Save Selection | 保存所選 |
Project Settings | 項 目設置。其中包括輸入設置,標籤設置(對場景中的元素設置不一樣類型的標籤,方便場景的管理),音頻設置,運行的時間的設置,用戶設置,物理設置(包括重 力,彈力,摩擦力等),品質設置(這個比較重要,用戶在這個選項裏面能夠設置工程默認的渲染品質),網絡管理,編輯器管理等 |
Render Settings | 渲染設置。若是以爲總體畫面的色彩質量不盡如人意,可在此處進行調節 |
Graphics Emulation | 圖形仿真。主要是配合一些圖形加速器的處理 |
Network Emulation | 網絡仿真。能夠選擇相應的網絡類型進行仿真 |
Project Settings | 項目設置。其中包括輸入設置,標籤設置,音頻設置,運行的時間的設置,用戶設置,物理設置,品質設置,網絡管理,編輯器管理等。 |
Snap Settings | 臨時環境,或理解爲快照設置。 |
三、Assets【資源】
開發工具
名稱 |
說明 |
Reimport | 從新導入資源 |
Create | 建立功能。能夠用來建立各類腳本,動畫,材質,字體,貼圖,物理材質,GUI皮膚等 |
Show In Explorer | 打開資源所在的目錄位置 |
Open | 打開選中文件 |
Delete | 刪除選中的資源文件 |
Import New Asset | 導入新的資源 |
Refresh | 刷新,用於導入資源包以後 |
Import Package | 導入資源包。當建立項目工程的時候,有些資源包沒有導入進來,在開發過程當中有須要使用,這時能夠用到導入資源包的功能 |
Export Package | 處處資源包 |
Select Dependencies | 選擇依賴項 |
Reimport | 所有從新導入 |
Sync MonoDevelop Project | 同步開發項目 |
四、GameObject【遊戲對象】
名稱 |
說明 |
Create Empty | 建立一個空的遊戲對象。能夠對這個空的對象添加各類組件,即各類屬性。在Component裏面會講到 |
Create Other | 建立其餘類型的遊戲對象。這裏麪包括了不少內容,基本上囊括了Unity3D所支持的全部對象。其中有粒子系統,攝像機,界面文字,界面貼圖,3D的文字效果,點光源,聚光燈,平行光,長方體,球,包囊,圓柱體,平面,表面,音頻混音區域,樹,玩偶,風域等 |
Center On Children | 這個功能是做用在父節點上的,即把父節點的位置移動到子節點的中心位置 |
Make Parent | 選中多個物體後,點擊這個功能能夠把選中的物體組成父子關係,其中在層級視圖中最上面的那個爲父節點,其餘爲這個節點的子節點 |
Apply Change To Prefab | 應用變動爲預置 |
Move To View | 這個功能常常用到,把選中的物體移動到當前編輯視角的中心位置,這樣就能夠快速定位 |
Align With View | 把選中的物體移動到當前編輯視角的中心位置,深度爲0,即移動到和視角同一個平面上 |
Align View To Selected | 把編輯視角移動到選中物體的中心位置 |
五、Component【組件】
名稱
|
說明 |
Mesh | 添加網格屬性 |
Particles | 粒子系統。可以造出很棒的流體效果 |
Physics | 物理系統。可使物體帶有對應的物理屬性 |
Audio | 音頻。能夠建立聲音源和聲音的聽者 |
Rendering | 渲染 |
Miscellaneous | 雜項 |
Scripts | 腳本。Unity內置的一些功能很強大的腳本 |
Camera-Control | 攝像機控制 |
六、Terrain【地形】
名稱 |
說明
|
Creat Terrain | 建立地形 |
Import Heightmap-Raw | 導入高度圖 |
Export Heightmap-Raw | 處處高度圖 |
Set Resolution | 設置分辨率 |
Create Lightmap | 建立光影圖 |
Mass Place Trees | 批量種植樹 |
Flatten Heightmap | 展平高度圖 |
Refresh Tree And Detail Prototypes | 刷新樹及預置細節 |
七、Window【窗口】
名稱 |
說明 |
Next Window | 下個窗口 |
Previous Window | 前一個窗口 |
Layouts | 佈局 |
Scene | 場景窗口 |
Game | 遊戲窗口 |
Inspector | 檢視窗口,主要指各個對象的屬性,也可稱爲屬性面板 |
Hierarchy | 層次窗口 |
Project | 工程窗口 |
Animation | 動畫窗口。用於建立時間動畫的面板 |
Profiler | 探查窗口 |
Asset Server | 源服務器 |
Console | 控制檯 |
八、Help【幫助】
名稱
|
說明 |
About Unity | 關於Unity |
Enter Serial Number | 輸入序列號 |
Unity Manual | Unity手冊 |
Reference Manual | 參考手冊 |
Scripting Manual | 腳本手冊 |
Unity Forum | Unity論壇 |
Welcome Screen | 歡迎窗口 |
Release Notes | 發行說明 |
Report a Problem | 問題反饋 |
第二章 Unity3D的簡單預覽
每一個Unity3D版本都會自帶一個Demo源文件。在3.0的正式版中,自帶的Demo就是網上展現的那款強大的射擊遊戲。在通常狀況下,您只要第一次打開Unity3D v3.0就會看見自帶的那個Demo項目文 件了。但若是Unity3D並無打開這個項目文件,你也能夠在Unity3D裏面的「File」菜單下點擊「Open Project」選項,在「C:\Documents and Settings\All Users\Documents\Unity Projects」這個路徑下找到項目文件夾「Bootcamp Demo」,選擇並打開它。打開項目以後,在舞臺場景面板中依然什麼都沒有顯示的話,請在Project【項目文件欄】雙擊場景文件 。稍等片刻以後,該舞臺場景的全部對象就能夠導入到舞臺場景之中。導入成功以後效果如圖2.1所示:
點擊一下中間的播放按鈕 作一下測試(若是您的機器配置不是很高,可能等待的時間會稍長)。稍等片刻,您就能夠在Game【動畫面板】中看到一個正在運行的射擊遊戲了。
在這個遊戲場景中,您會看到比其餘主流遊戲還要細膩逼真的畫面效果,例如各個物體的實時陰影。如圖2.2所示:
固然若是您的機器配置較高,您還能夠點擊「Esc」鍵來將遊戲畫質進一步調高。調節界面如圖2.3所示:
下面咱們來看下調整畫面效果先後的遊戲畫面對比,如圖2.4.1和圖2.4.2所示:
咱們很明顯的就能夠感受到河水的效果以及場景陰影的效果都真實了許多。
第三章 在Unity3D中建立一個山勢地形圖
前面兩章咱們比較細緻的對Unity3D的界面和表現效果等進行了說明與講解。相信不少朋友在看過Unity3D如此強大的畫面效果後都已經按耐不住想要本身動手操做了,接下來咱們就嘗試在Unity3D中建立一個山勢地形圖。
第一步:建立一個新項目。
打開Unity3D軟件,它會自動載入上一次咱們打開過的「Bootcamp Demo」項目文件。不用管它,在軟件打開以後點擊 ——> ,在彈出的 對話框中找到 輸入建立項目的文件夾地址,或者點擊後面的 選擇一個文件夾地址(注:已建立Unity3D項目的文件夾,不能再看成新建立項目的文件夾來使用,不然會因沒法找到文件而報錯),而後在 中選擇要導入的項目文件包,每一個文件包都帶有一些插件功能,因爲咱們第一次建立項目文件,因此咱們將全部的複選框都打上勾。但這樣會導致Unity3D在開始加載的時候速度偏慢,等之後咱們你們對各個插件包的做用都熟悉了,在建立Unity3D項目文件的時候,咱們只須要勾選須要使用到的插件包就能夠了。選項面板如圖3.1所示:
所有設置完成後,咱們點擊 建立項目。
第二步:建立地形。
在建立一個新項目後,咱們會看見新項目的各個面板中,只有Project【項目文件欄】包含了 和 兩個文件夾,這兩個文件夾裏面裝的就是在建立項目時導入項目文件包裏的全部文件。除此以外,其餘版面都是空空如也。不要着急,萬丈高樓平地起,咱們立刻就利用文件包和系統功能來豐富各個版面的內容。首先咱們點擊菜單欄上的 ——> ,建立一個帶有地形屬性的平面,如圖3.2所示:
第三步:添加攝像機。
建立好地形後,咱們會發現Game【動畫面板】中依然沒有任何畫面。其實道理很簡單,就像演唱會的實況直播同樣。場景都搭建好了,演員也在舞臺上表演,卻沒有架上攝像機,電視機前的觀衆怎麼可以看到現場的畫面呢?
接下來咱們就建立一個攝像機。點擊 ——> ——> ,這樣場景中就會建立一個攝像機,這是您就能夠在Game【動畫面板】中觀看到攝像機所觀察到的星象了。如圖3.3所示:
第四步:調整地形大小。
系統建立的地形默認大小是2000*2000的面積,實際編輯的時候會顯得很大,不方便操做,因此咱們對建立的地形面積進行調整,以便咱們後續的編輯。
點擊菜單欄上的 ——> ,彈出 面板來調節地面的大小。將 後面的數字改爲500.而後將 後面的數字也改爲500,設置好以後點擊 按鈕將原來的地形改爲500*500大小的面積。
第五步:給場景編輯材質。
在場景面板中選中剛纔建立的地面對象 ,若是您以爲場景中不是很方便選擇所須要的對象,那麼您還能夠在Hierarchy【層次清單欄】選中您所需的對象,該欄中包含了全部場景面板中的物體對象。選中地面對象 以後,咱們會在Inspector【屬性面板】中立刻發現與之對應的屬性,包含有:Position【座標】、Rotation【旋轉量】、Scale【縮放尺寸】,以及地面對象固有的 和 。如圖3.4所示:
其中 這個像畫筆同樣的按鈕,是用來改變地面材質的。咱們點擊它以後,能夠在下面找到 按鈕,點擊——> 來到 界面,如圖3.5所示:
而後咱們單擊 後面的圓圈,就能夠爲地面添加您所喜歡的材質了。選好以後點擊 按鈕來填入新材質。添加材質以後的地面如圖3.6所示:
若是您以爲這個地形的材質過於簡單,那麼您能夠繼續點擊 ——> ,來添加第二個材質,而後在 中選擇您想要的筆刷形狀,如圖3.7所示:
接着就能夠在場景面板中刷出新材質的區域範圍了。如圖3.8所示:
第六步:製做山峯。
完成了地面材質的製做,接下來就能夠製做山峯了。
點擊 這三個按鈕其中的一個,選擇合適的筆刷,在地形圖中能夠刷出高山的形狀,如圖3.9所示:
若是以爲如今刷出來的山峯過高了,活着以爲某處的山有些多餘,能夠按住Shift鍵不放,用剛纔選擇的筆刷進行反向平刷便可。
第七步:種植草和樹木。
接下來就能夠給地形種植一些草和樹木了。具體的種草按鈕是 ,種樹的按鈕是 。草和樹木的設置方法與地形材質的設置方法十分雷同,都是先點擊 按鈕來添加您所須要的花草和樹木,而後在場景面板中刷出您所須要的區域便可。如圖3.10所示:
這裏你們須要注意一點,Unity3D在編輯模式下爲了節約資源,採起了資源剔除的方法。若是您在利用筆刷「種草」的過程當中,沒有看到您所「種」上去的草,這是您只需將畫面拉近便可觀察到草的效果了。如圖3.11所示:
第八步:設置地形上的風速、陰影效果。
種上了草和樹木,若是在遊戲中運行時靜止不動,會讓人感受很不天然,因此咱們在地形中添加上風和陰影的效果,讓草隨風擺動,這樣會變得更加逼真。
點擊 按鈕,來設置地形上的風速、陰影等效果。如圖3.12所示:
第九步:添加光照效果。
地形相關的全部效果已經設置完畢了,可是咱們發如今Game【動畫面板】中的畫面很暗,這是因爲沒有加入燈光的緣故。
點擊 ——> ——> ,來建立一個太陽光效果。如圖3.13所示:
太陽光和太陽自身的位置關係並不大,只與自身的角度有關,這一點和咱們平常生活中的太陽光是一致的。因此爲了讓場景變得更亮,咱們就須要用到場景調整工具中的旋轉按鈕 來對太陽光進行旋轉。固然您也能夠在屬性面板中對它進行調節。根據咱們生活的常識,當太陽光直射地面的時候,光線最強。調整以後的效果如圖3.14所示:
怎麼樣,這時的Game【動畫面板】中的畫面是否是亮了許多?
第十步:攝像機觀察設置。
爲了讓攝像機全方位的觀察咱們剛纔所建立的場景,您能夠在Project【項目文件欄】中找到 、 、 這三個腳本文件,並將它們依次拖放到場景中的攝像機上面。如圖3.15所示:
若是您以爲在Project【項目文件欄】中的文件過多,不便於尋找,您還能夠在Project【項目文件欄】上方的搜索框輸入他們的名字來進行搜索。這 樣很快就能找到對應的文件了。放置完成後,點擊測試按鈕,您就能夠身臨其境的在您剛纔建立的Game【動畫面板】中進行漫遊了。用鼠標控制視角,用鍵盤的方向鍵控制行走。在漫遊的過程當中,您能夠清晰的看到剛纔建立的草隨微風輕輕擺動。效果如圖3.16所示:
第十一步:添加天空效果。
這時咱們從Game【動畫面板】中看到的天空是沒有任何效果的,接下來咱們給場景添加一個天空盒,使場景具備藍天的效果。
選中場景中的攝像機對象,而後點選菜單欄中的 ——> ——> ,爲攝像機添加一個天空盒。添加成功以後,咱們就可以在攝像機的屬性面板中找到剛纔添加的天空盒了。
接着咱們去Project【項目文件欄】找到「Standard Assets」文件夾下的「Skyboxes」文件夾。這裏面擺放了許多關於天空的材質球,您只須要選中一個您喜歡的天空材質球,並拖放給攝像機離的天空 盒【Skybox】的材質屬性【Custom Skybox】,就可讓場景的天空佈滿這種材質效果。如圖3.17和圖3.18所示:
選中場景中的光照對象,而後在他的屬性面板中找到「Flare」,並點選它後面的圓圈 。在它彈出的 對話框中選中雙擊 這種光照效果,這樣就可使得您在動畫模式中清楚的看見太陽所在的位置。再運行一下動畫,看看效果。
第十二步:添加光照陰影效果。
細心的朋友必定會發現,如今場景中的樹木等物體是沒有陰影的,這很不天然。因此爲了讓場景更加的逼真,咱們還能夠爲場景添加光照陰影效果。
具體作法以下:選中光照對象,在它的屬性面板中找到 ,它默認的是 (沒有陰影),您能夠將它改爲「Soft Shadows」【軟渲染陰影】或者是「Hard Shadows」【硬件渲染陰影】。「Soft Shadows」【軟渲染陰影】以消耗CPU的計算爲代價來產生陰影效果,這種模式運行速度較慢,但對於機器配置比較落後的使用者是惟一的選擇。 「Hard Shadows」【硬件渲染陰影】可利用新一代GPU的顯卡加速功能來爲遊戲進行陰影效果的渲染處理,其運行速度比較快,渲染效果也比較理想。但不管您選 擇哪個選項,動畫場景的物體都會相對於陽光長生陰影效果。如圖3.19所示:
第十三步:保存項目。
全部的場景效果已經調試完畢後,按下Ctrl+S來保存場景文件,取名叫作「text」以便往後調用。若是保存成功,您會在您項目的Project【項目文件欄】中看到一個這樣的文件
第四章 爲地形添加水源、水流以及水下的模糊效果
製做好了地形的各類效果,接下來咱們給場景添加一些水效果,使場景更加豐富。
第一步:添加水面
因爲我在上一次的地形創做中就已經在山峯之間製做了一塊窪地,它就能夠做爲一個放置湖水的地方。若是您上次的創做並無這樣的地形,那麼請您從新建立一個山勢地形圖,就看成本身的一次練習吧。
在場景面板中點擊Y方向的綠色箭頭 ,切換到頂視圖,這樣能夠便於咱們很快的找到窪地所在的地方。如圖4.1所示:
圖4.1
而後用鼠標滾輪迅速的推動觀測距離。如圖4.2所示:
圖4.2
接着再到Project【項目文件欄】找到「Standard Assets」文件夾下的 (僅限專業版使用,若是您使用的版本是非專業版本,請轉到 )文件夾中,拖拽一個 【白天光照效果的水模型】到窪地的中央,並利用場景調整工具中的縮放工具 ,將水模型調整到合適的大小。如圖4.3所示:
圖4.3
緊接着咱們再點擊場景面板中右上角的白色小方塊 ,將視角切換到透視圖。而後利用場景調整工具 ,將水模型調整到合適的高度。如圖4.4所示:
圖4.4
這時您只須要在播放時,將攝像機移動到窪地這個地方就能夠看見湖水的效果了。
第二步:添加瀑布。
如今看來效果略顯單調,既然是山中泉水咱們還得有一些瀑布和濺起的水花。爲了節約查找的時間,咱們直接在Project【項目文件欄】上方的搜索框輸入字符「water f」,這樣就能夠查處如圖所示的材質和模型。如圖4.5所示:
圖4.5
在這裏面, 是一個噴泉模型, 是一個水面的飛濺模型, 是一個瀑布模型。咱們先拖入一個 到窪地,而後利用場景調整工具來調整它的位置和角度。如圖4.6所示:
圖4.6
這時的瀑布略顯小了一些,咱們能夠先選中它,而後到它的屬性面板裏面去調整成您想要的效果。如圖4.7所示:
圖4.7
第三步:添加水面飛濺模型。
接下來咱們會看到瀑布落到水面是沒有水花飛濺的效果的,這不合常理。因而咱們在瀑布下的水面上方放置一個水面飛濺模型 。因爲它的噶偶必定要和水面高度一致,因此咱們先點選水平面,看看它的Y軸座標,而後複製到 屬性面板中一樣的位置,以確保它是伏在水面上的。緊接着再到它的屬性面板中調整它的屬性,讓模型效果調整成您想要獲得的效果。如圖4.8所示:
圖4.8
第四步:添加水下模糊效果。
咱們運行一下游戲 ,而後將鏡頭移動到泉水的水面下。如圖4.9所示:
圖4.9
你們會發現,水下的視覺和在地面上的視覺效果是徹底同樣的。這和咱們平時的生活現狀是不相符的,因此咱們還得作一下相應的調整。首先點擊 ——> ——> ,建立一個立方體,並運用場景調整工具將它調整到整個水窪的實體部分。(注:運用其餘形體也能夠,其主要是用來覆蓋水窪的實體部分,以用來和攝像機作碰撞檢測,讓攝像機的鏡頭變得模糊。)如圖4.10所示:
圖4.10
接着,確保您建立的這個cube是被選中狀態,到它的屬性面板中,將「Box Collider」卷展欄中的「Is Trigger」複選框打上勾(若是這裏不打勾,這個cube將做爲一個實物,當攝像機撞上它時,就像撞上牆同樣,沒法穿過。)如圖4.11所示:
圖4.11
而後再將「Mesh Renderer」卷展欄下的全部複選框所有勾掉,使這個立方體只做爲一個形體存在,而不讓它在場景中做出任何的顯示渲染。如圖4.12所示:
圖4.12
接着在屬性面板的最上方將它的名字由「Cube」改成「WaterColler」 ,再選中 的下拉框 中新添加一個「WaterColler」的標籤分類。而後將這個「WaterColler」水窪碰撞體的Tag也改爲「WaterColler」。
而後咱們在菜單欄中選中 ——> ——> ,新添加一個JS腳本。到Project【項目文件欄】找到剛纔新建的JS腳本 ,按下F2鍵更改它的名字爲「UnderWatereffect」,並雙擊編輯它,輸入代碼如圖4.13所示:
圖4.13
輸入完畢,按Ctrl+S保存代碼並關閉退出。而後將代碼拖拽給攝像機使用。從新運行一下游戲,將攝像機移動到水下,就能夠看到一片模糊的景象了。如圖4.14所示:
圖4.14
第五章 Unity3D中腳本的簡單概述
和其餘的3D軟件同樣,Unity3D做爲一個類播放器的3D集成軟件,具備良好的時間層級關係。好比Start()裏面的語言,老是在播放器初始化時執行一次,然後就再也不執行。例以下面用JS寫的一個例子。在菜單欄上選中 ——> ——> ,將下面這段代碼拖拽給Hierarchy【層次清單欄】中任意一個對象。
您就會在播放器剛開始播放的時候,在左下角的控制檯面板中看到 這句話,證實您的Game播放器已經開始工做了。如圖5.1所示:
圖5.1
(注:這個控制檯買那般之後在你們使用的時候會常常用到它,由於它能夠用做您代碼片斷的調試,以及您程序出錯了的提示框,詳細的提示您出錯的緣由所在。)
固然有了初始化函數,就必定會有刷幀函數Update(),該函數內全部的代碼會在播放器每播放一幀時執行。例以下面用JS寫的一個例子,在菜單欄上選中 ——> ——> ,輸入以下代碼:
該代碼會在播放器每播放一幀的時候,顯示遊戲開始到如今所消耗的時間值。
Unity3D中有着很是強大的接口處理功能,您能夠在代碼中爲對象制定任意一個空接口用於和對應類型的對象進行交互,例以下面用JS寫的一個例子,在菜單欄上選中 ——> ——> ,輸入以下代碼:
該代碼爲對象添加了一個在Z軸方向上的初始速度,若是在沒有其餘外力的做用下,物體將一直沿着Z軸方向以5的速度運動。而且當您將這段代碼拖拽給一個物體對象後,它的這個初始速度能夠做爲一個接口在它的屬性面板中進行修改。如圖5.2所示:
圖5.2
除了數字做爲接口外,接口還能夠是對象,例以下面用JS寫的一個例子,在菜單欄上選中 ——> ——> ,輸入以下代碼:
您能夠將這段代碼拖拽給Hierarchy【層次清單欄】中任意一個對象,由於它在這裏定義了一個Transform類接口對象cubeGO,因此它幾乎與拖拽的對象無關。拖拽成功以後來到該物體的屬性面板中,您能夠看到這樣一個屬性卷展欄 ,cubeGO的後面有個很明顯未定義對象填寫欄 ,而後咱們把想要使之運動的物體拖拽到這個上面來,當咱們運行遊戲時,只要按下「G」鍵就能夠看到被拖拽的物體做爲「cubeGO」的指代對象,朝着Z軸方向運動了。
第六章 Unity3D中的C#Script編程的注意事項
也許您在學習Unity3D以前,已是一位C#的編程高手了。但在Unity3D中的C#並不像真正的C#那般強大,在Unity3D的C#中必須所有繼承自MonoBehaviour。下面爲一段C#Script的完整代碼:
除此以外它不支持空間命名,但官方說他們頗有可能會在之後的版本中支持這一功能。
在Unity3D中,JavaScript和C#Script的編程效果近乎同樣。只是爲了避免同程序愛好者設立了不一樣的編程模式。而且JavaScript所編寫的代碼對象能夠和C#Script編寫的代碼對象交叉使用,並不發生任何衝突。
第七章 修改MonoDevelop編輯器爲Unity3D的默認編輯器
一般狀況下Unity3D默認的編輯器都是「UniSciTE」,它用起來十分輕巧快捷,就像記事本同樣。
但若是要開發一些大型的項目, 顯然「UniSciTE」簡單的功能就不足以支撐它的工做了。但若是您每次在編輯腳本的時候,都去用「MonoDevelop」一個個的打開,又會顯得很 麻煩。因此咱們就要在Unity3D中作一些設置,讓「MonoDevelop」成爲默認的腳本編輯器。具體的步驟是:在菜單欄中找到 ——> ,在彈出的 對話框中找到 並將它後面的下拉框選中爲 ,瀏覽到咱們「MonoDevelop」可執行文件存放的地方。這個路徑通常都和您的Unity3D文件夾在一塊兒。
設置好以後,從新再Unity3D中點選腳本文件,就會發現已經能用「MonoDevelop」軟件打開了,但一次打開的時候會稍顯慢一點,由於「MonoDevelop」須要加載不少東西。
固然,若是您是一個C#和Visual Studio忠實的編程愛好者,您也能夠用一樣的方法來設置Visual Studio軟件的路徑,讓Visual Studio成爲您Unity3D腳本的默認編輯器。
第八章 向Unity3D中導入外部模型
Unity3D支持多種外部導入的模型格式,但它並非對每一種外部模型的屬性都支持。具體的支持參數,您能夠對照以下列表:
種類 |
網絡 |
材質 |
動畫 |
骨骼 |
Maya的.mb和.mal格式 |
√ |
√ |
√ |
√ |
3D Studio Max的.maxl格式 |
√ |
√ |
√ |
√ |
Cheetah 3D的.jasl格式 |
√ |
√ |
√ |
√ |
Cinema 4D的.c4dl 2格式 |
√ |
√ |
√ |
√ |
Blender的.blendl格式 |
√ |
√ |
√ |
√ |
Carraral | √ |
√ |
√ |
√ |
COLLADA | √ |
√ |
√
|
√ |
Lightwavel | √ |
√ |
√ |
√ |
Autodesk FBX的.dae格式 |
√ |
√ |
√ |
√ |
XSI 5的.xl格式 |
√
|
√ |
√ |
√ |
SketchUp Prol | √ |
√ |
||
Wings 3Dl | √ |
√ |
||
3D Studio的.3ds格式
|
√ |
|||
Wavefront的.obj格式 |
√ |
|||
Drawing InterchangeFiles的.dxf格式 |
√ |
在下面的實例中,咱們利用3D MAX來製做一個完整的動畫,並導出FBX的格式給Unity3D使用。
第一步:建立新的工程文件。
建立一個名爲「Turret」的項目文件夾。而後打開Unity3D軟件,選擇 ——> ,建立一個新工程項目,在項目路徑中點擊 找到咱們剛纔建立的「Turret」文件夾,並點選咱們須要導入的包文件,而後點擊 來建立一個新的工程文件。須要注意的是,以上步驟千萬不能亂,由於Unity3D是沒法以非空的文件夾做爲工程文件夾來建立項目的。
在此爲了節省時間,筆者直接使用剛纔建立好的場景來進行示範。
第二步:製做一個炮塔模型。
打開3D MAX軟件製做一個炮塔模型,並將製做好的模型保存在「Assets」【資源】文件夾下面。3D MAX中的模型樣圖如圖8.1所示:
圖8.1
第三步:將炮塔模型放入場景。
從新來到Unity3D的軟件環境中,這時你們已經能在Project【項目文件欄】看到咱們剛纔用3D MAX導出的模型文件和材質貼圖文件了。接着咱們在地形場景中找到一個合適的位置,將咱們的炮塔拖拽進去。如圖8.2所示:
圖8.2
可是咱們發現,這樣彷佛過小了一點。在改變外部模型尺寸的時候,有一個技巧,您沒必要在場景中修改它。兒科一道該模型的屬性面板中去修改它的「Scale Factor」大小。如圖8.3所示:
圖8.3
它的默認值都是0.01,咱們在這裏將它改成0.1,並在屬性面板的最下方找到 按鈕,點擊它讓模型尺寸在Unity3D中獲得改變。如圖8.4所示:
圖8.4
怎麼樣,咱們的炮臺是否是雄壯了許多?可是,咱們並不贊同這樣的模型導入方法。由於根據官方的說法,他們建議您將作好的模型導出成爲FBX格式的模型文件 給Unity3D使用。也許這樣會使模型在Unity3D中的運行速度得以提升吧。因此說咱們仍是回到3D MAX的軟件環境下面,將模型導出。
第四步:將炮塔模型導出。
在3D MAX中,點擊File【文件】——>Export【導出】,將模型文件導出爲FBX文件,保存到咱們建立的文件夾中的「Assets」【資源】文 件夾下面。注意一下彈出的「FBX Export」面板,這裏包含了模型動畫、骨骼工具、材質等等一系列的導出設置。若是您沒有在模型中添加這些東西,就須要將沒必要要的複選框勾選掉。
第五步:將炮塔模型再次放置到場景中。
回到Unity3D的軟件環境,在Hierarchy【層次清單欄】中選中原先的炮塔模型,按下「Delete」鍵將其刪除。而後在Project【項目 文件欄】中找到剛剛導入的FBX模型,點擊選中,用前面修改模型尺寸的方法來修改FBX模型的尺寸。而後將其放置在場景中合適的位置上。因而從3D MAX中導出的模型就順利的導入到Unity3D的場景中了。
第九章 圖形用戶界面類G.U.I
您在玩不少3D遊戲的時候,不知是否注意到在遊戲界面中,總有一些圖形和文字信息是不隨着3D視角的改變而改變的。這也是因爲遊戲自己的要求而決定的。好比說英雄的生命值,聊天窗口的文字信息等等。這些不被改變的內容就被稱做G.U.I。
下面咱們一塊兒在Unity3D中簡單作兩個G.U.I實例,來講明它的用法。咱們在現有場景的基礎上製做一個炮彈發射的遊戲。想一想一個炮彈發射的遊戲都需 要那些元素?是否是應該在畫面的一個角落顯示炮彈填發的狀況?就像大多數3D遊戲那樣,您的魔法值在使用後須要必定的回覆時間。接下來咱們製做一個彈藥裝 填的效果。
第一步:製做彈藥裝填圖案。
用PhotoShop製做彈藥的裝填時間圖示,並將它們所有保存爲PNG格式文件到工程項目的「Assets」【資源】文件夾內。彈藥裝填圖示如圖9.1所示:
圖9.1
第二步:導入圖案。
回到Unity3D軟件環境中,爲了方便歸類,咱們在Project【項目文件欄】中右鍵——>「Create」——>「Folder」新建一個文件夾,並按F2將其改名爲「ShortTime」,再將導入的五張圖片拖入文件夾內。如圖9.2所示:
圖9.2
第三步:建立圖標。
在菜單欄中選中 ——> ——> ,建立一個G.U.I圖標,這是你們會在Scene【場景面板】中看到一個默認Unity3D的圖標,如圖9.3所示:
圖9.3
在Hierarchy【層次清單欄】選中它以後,來到它的屬性面板中,點擊Texture後面的 來改變它的圖標爲咱們剛導入的彈藥裝填圖標。再經過屬性面板中其餘屬性值的更改,獲得圖標最終的顯示大小和顯示位置,如圖9.4所示:
圖9.4
第四步:建立文字說明。
在菜單欄中選中 ——> ——> ,建立一個G.U.I文字在圖標的旁邊座位說明。其文字輸入、文字大小、文字樣式等等也一樣在它的屬性面板中調節。如圖9.5所示:
圖9.5
第十章 讓Unity3D支持中文字體
在上一章裏面,咱們一塊兒學習了 G.U.I圖形和文字的使用方法。可是細心一點的朋友可能會發現,在「GUI Text」中輸入中文是沒有任何效果的。這是因爲如今Unity3D還不支持中文的緣故。可是,這並不影響咱們對中文做品的開發。Unity3D中能夠將 任意的字體做爲材質文件賦予「GUI Text」,其中就包括中文字體。
具體作法以下:
第一步:將您須要的中文字體拷貝到項目文件中的「Assets」【資源】文件夾內。
第二步:在菜單欄中選中 ——> ——> ,建立一個G.U.I文字,而後在它的屬性面板中找到「Font」點選它後面的 ,將它的字體類型給爲您剛纔拷貝進來的那個字體,接着在屬性面板中找到「Text」後面的輸入框輸入您想要輸入的中文內容。觀察場景面板,獲得如圖10.1所示效果:
圖10.1
第十一章 製做炮臺的旋轉
你們知道,炮臺須要向四周不一樣的角度發射炮彈,這就須要咱們將炮臺設置成爲會旋轉的物體,接下來咱們就一塊兒製做一個會旋轉的炮臺。
第一步:給炮臺的炮筒添加旋轉函數。
給炮臺的炮筒部分添加一個旋轉函數,使得炮臺隨着鼠標在X方向上的移動而移動。在Project【項目文件欄】中右鍵——> ——> 新建一個JS函數,並按F2將其改名爲「TurretRotate」,而後輸入以下代碼。
點選場景面板中的炮塔,找到炮塔上半部分所對應的對象,如圖11.1所示:
圖11.1
接着將剛纔的 文件拖拽給這個對象。
第二步:設置攝像機跟隨。
選中攝像機對象「Camera」,點選菜單欄中的 ——> ——> ,爲攝像機添加一個平滑的跟隨代碼,但這裏並無設置跟隨對象。
繼續選中攝像機對象,在它的屬性面板中找到「Smooth Follow(Script)」卷展欄下的「Target」,而後將炮臺上半身對象拖拽給它。如圖11.2所示:
圖11.2
第三步:運行遊戲,觀察效果。
點擊測試按鈕 ,試着移動下鼠標看看炮塔的旋轉效果。如圖11.3所示:
圖11.3
攝像機隨着炮塔的旋轉而旋轉,而G.U.I圖標和G.U.I文字一直在畫面的左上角不動,效果很不錯。
注:這裏須要注意的問題一個是攝像機的動做容易發生衝突,因此在設置的時候,須要注意將不使用的攝像機動做關閉。還有一點是模型製做完成導出的時候,須要注意將模型的座標軸設置好,不然在腳本執行的時候,會出現攝像機不能與炮口方向一致的狀況。
第十二章 製做炮彈的射擊和爆炸效果
製做完了炮臺的旋轉,接下來咱們繼續製做炮彈相關的效果。
第一步:建立炮彈。
點擊菜單欄的 ——> ——> ,建立一個球體模型,並利用場景調整工具將其調整到和炮口差很少的大小。如圖12.1所示:
圖12.1
第二步:給炮彈添加貼圖。
找兩張金屬材質的貼圖,第一張爲基本RGB貼圖,第二張爲普通顯示的貼圖,如圖12.2所示:
圖12.2
這樣作是爲了一會在給物體賦予材質時,讓它有立體的感受。您也能夠只給物體照一張貼圖材質。找到想要的材質貼圖以後,將它們拷貝到項目文件夾中的「Assets」【資源】文件夾內。
接下來選中剛纔的球體模型,在它的屬性面板中找到材質球下拉選項框。將他的渲染模式改成「Bumped Diffuse」,緊接着將深色的材質貼圖拖放給第一個材質框,將淺色的材質貼圖拖放給第二個材質框。如圖12.3所示:
圖12.3
因而咱們就會獲得一個帶有材質效果的炮彈了。
第三步:設置炮彈的發射效果。
在菜單欄中點選 ——> ——> ,建立一個預製類對象,並按下F2鍵將它的名字改成「Shot」,而後將球體模型拖入到預製對象中,並剔除場景面板中的炮彈模型。
可是這時的球體模型僅僅是在外觀上有了炮彈的樣子,咱們還得讓它具備炮彈同樣的物體特性。接着在菜單欄中點選 ——> ——> ,爲炮彈添加一個剛體屬性。
第四步:設置炮彈的發射起點。
在菜單欄中點選 ——> ,建立一個空對象放置在炮口,做爲一會炮彈發射的起始點。按下F2將其改名爲「FirePoint「。而後在Hierarchy【層次清單欄】中,把「FirePoint「拖拽到炮塔上半部分的旋轉對象中去,這樣可使得它和炮塔一塊兒旋轉。
第五步:爲炮彈建立發射函數。
在Project【項目文件欄】中右鍵——> ——> 新建一個JS函數,並按F2將其改名爲「Open Fire」,而後輸入以下代碼。
輸入完畢以後,將該代碼拖拽給Hierarchy【層次清單欄】中的發射對象「FirePoint「,而後咱們會發如今屬性面板中的「FirePoint 「接口和」Bullet「接口對象爲空。因此咱們必須得把發射點對象「FirePoint「和炮彈對象」Shot「拖拽到兩個對應的接口上。如圖12.4 所示:
圖12.4
第六步:添加火花效果。
接下來咱們按下測試按鈕 看看效果。你們會發現朝前發射的炮彈再碰到山體後,都被彈了起來。因此說此時咱們製做的炮彈還只是一個球體,並不會爆炸。接下來咱們還要繼續做出炮彈的爆炸效果。
在Project【項目文件欄】的查找框中輸入「Fireworks「關鍵字,將查找到的 拖拽到場景面板,您會看到一個動態的實時爆炸火花。如圖12.5所示:
圖12.5
接着確保該對象爲選中狀態,到它的屬性面板中調節它的各個屬性值,直到達到您想要的效果爲止。如圖12.6所示:
圖12.6
接下來在菜單欄中點選 ——> ——> ,建立一個預製類對象,並按下F2鍵將它的名字改成「BoomPrefab」,而後將這個爆炸火花拖拽到預製對象中去,並刪除場景面板中的火花。
第七步:爲炮彈建立爆炸效果。
添加一段JavaScript代碼,取名叫作「Boom「,這段代碼的主要做用是給炮彈添加一個碰撞檢測。若是炮彈碰撞到任何物體,就讓炮彈在場景中消失,並在炮彈碰撞消失的地點加載爆炸火花的預製對象。具體代碼以下:
輸入完畢以後保存該代碼,並把這段代碼拖拽給炮彈預製對象「Shot「。而後點選預製對象」Shot「,在它的屬性面板中找到剛纔拖拽給它的」Boom 「卷展欄,再將爆炸火花預製對象」BoomPrefab「拖拽給它的接口」BoomFire「。運行遊戲,看一下效果。如圖12.7所示:
圖12.7
第八步:設置爆炸效果的消失。
剛纔一系列的設置以後,你們已經可以很明顯的看到爆炸以後的火花效果,但它會一直在那裏閃爍,並不會消失。這嚴重違背了現實生活的景象,因此咱們還得爲它加上一段時間限定消失代碼。
繼續建立JavaScript代碼,改名爲「desBoom「,具體代碼見下:
輸入完畢以後,將這段代碼拖拽給爆炸火花預製對象「BoomPrefab「。再次運行程序,咱們會發現火花在爆炸產生2秒後就自動消失了。
第九步:爲爆炸效果添加音效。
完成了畫面效果的製做,咱們還須要給遊戲添加上很是重要的一個元素——聲音。其實這個過程很是簡單,只須要在網絡上搜尋一個您認爲合適的聲音,並將這段聲 音文件添加入項目文件夾的「Assets「【資源】文件夾內。而後在Project【項目文件欄】中,將其拖拽給爆炸火花的預製對象 「BoomPrefab「,這樣聲音文件就能夠和爆炸火花同時產生了。
若是您以爲聲音須要作適當的調節,例如「是否在預製對象產生時播放?「,」聲音是否循環播放「等這些問題。咱們均可以在選中預製對象後,在它的屬性面板中找到聲音的調節卷展欄,對它一一進行調節。
以上就是這款強大的跨平臺3D遊戲開發工具Unity3D的基礎入門教程了。相信你們看過以後多加練習,必定可以製做出很是優秀的3D遊戲,也但願個人教程可以幫助你們較快的上手Unity3D,謝謝!
天地會Unity3D討論羣:
1羣:175283762(已滿)
2羣:120543899