1. 程式人生 > >Unreal Engine 4 系列教程 Part 1:入門

Unreal Engine 4 系列教程 Part 1:入門

原文:Unreal Engine 4 Tutorial for Beginners: Getting Started
作者:Tommy Tran
譯者:Shuchang Liu

本篇教程將引導你安裝Unreal Engine 4引擎,瞭解基本操作介面,並建立你的第一個遊戲物體。

Unreal Engine 4引擎本質上是一個遊戲開發工具集,能夠勝任從2D手機遊戲到3A主機遊戲的製作,其中不乏方舟生存:進化,鐵拳7,王國之心3等3A遊戲。

新手很容易就能上手Unreal Engine 4引擎開發遊戲。通過藍圖視覺化腳本系統,你甚至無需編寫任何程式碼就製作出遊戲!配合簡單易上手的操作介面,開發者能很快製作出可玩的遊戲原型。

本篇教程主要幫助初學者瞭解上手Unreal Engine 4引擎,以下是本篇教程的關鍵知識點:

  • 引擎安裝
  • 資源匯入
  • 建立材質
  • 利用藍圖建立具有基本功能的物體

為了實際掌握這些知識點,我們會動手寫個小例子:在遊戲場景建立一個轉檯,旋轉展示香蕉。

注意:本篇教程只是Unreal Engine 4系列教程的其中一篇:

  • Part 1:入門
  • Part 2:藍圖
  • Part 3:材質
  • Part 4:UI
  • Part 5:製作簡單遊戲
  • Part 6:動畫
  • Part 7:音訊
  • Part 8:粒子系統
  • Part 9:AI
  • Part 10:製作簡單FPS遊戲

安裝Unreal Engine 4引擎

Unreal Engine 4引擎需要通過Epic Games 啟動器來下載安裝。直接前往官網,點選右上角的Get Unreal按鈕。

你需要先建立一個賬號,才能下載啟動器。建立完賬號後,根據作業系統下載對應的啟動器。

下載安裝並開啟啟動器,你會看到下面的視窗:

接著輸入註冊郵箱和密碼,點選Sign In,會看到下面的視窗:

點選左上角的Install Engine,啟動器會跳轉到選擇元件安裝的介面。

注意:Epic Game一直在更新Unreal Engine 4引擎,所以你下載的引擎版本可能跟教程中的不一樣。我剛開始寫這篇教程,引擎版本就更新到了4.14.3!不過只要你的引擎版本在4.14以上,這篇教程的內容還是適用的。

安裝介面的預設選項是Starter Content,Templates and Feature Packs和Engine Source。我建議你全部勾選,因為:

  • Starter Content:資源包,你可以在專案裡免費使用這些資源,其中包括模型,材質。你可以把這些資源用於製作遊戲原型,或者用於最終成品裡。
  • Templates and Feature Packs:勾選該選項,會根據你選擇的型別構建具備基本功能的模板專案。比如,勾選Side Scroller創建出來的模板專案,會有一個具備移動功能的角色以及固定視角的平面攝像機。
  • Engine Source: Epic提供了引擎原始碼,意味著任何人都可以修改引擎原始碼。比如說你想給引擎編輯器新增自定義功能,可以通過修改原始碼做到這一點。

下拉列表,可以看到引擎支援多個平臺。如果你不打算針對某些平臺開發遊戲,可以不用勾選。

選擇完畢後,點選Install。當安裝完畢,Library頁籤就會出現引擎資訊。現在我們可以來建立專案了。

建立專案

點選Launch按鈕開啟專案瀏覽器,然後點選New Project頁籤。

點選Blueprint頁籤,你可以選擇其中一種模版來建立專案。不過,我們打算從頭實現教程例子,所以選擇Blank建立空模板專案。

在底下,你可以看到一些額外設定。

簡單講解這些設定的作用:

  • Target Hardware: 選擇Mobile/Tablet會禁用掉一些後處理效果。在該設定下,滑鼠輸入會被自動識別成觸控輸入。我們把該選項設定成Desktop/Console。
  • Graphic Target:選擇Scalable 3D or 2D會禁用一些後處理特效。把該選項設定成Maximum Quality。
  • Starter Content:你可以啟用該選項來引入初始資源。簡單起見,該選項設定成No Starter Content。

最後底下的部門用於設定專案存放位置,以及你的專案檔名。

你可以通過點選右側的省略號圖示修改專案存放位置。

專案名稱指的並不是遊戲名稱,後續修改遊戲名稱,也無需修改專案名稱。選擇Name處的文字框,輸入BananaTurntable。

最後,點選Create Project。

認識操作介面

一旦建立了專案,編輯器就會自動開啟。整個編輯器由多個面板組成:

1.Content Browser: 該面板展示了所有專案的檔案。使用該面板建立資料夾,存放專案檔案。你可以使用搜索框或篩選列表搜尋檔案。
2.Modes:通過該面板可以選擇地形工具和植被工具。預設開啟的頁籤是放置工具,用於在關卡放置不同型別的物體比如光線和攝像機。
3.World Outliner:展示當前關卡的所有物體。你可以對物體進行分門別類管理,建立不同資料夾,將同類物體放在一起。
4.Details:該面板展示你所選中物體的詳細屬性。我們可以通過該面板編輯物體,編輯只會對當前物體例項生效。比如,場景裡有兩個球體,你修改了其中一個球體的大小,修改只對你選中的球體生效。
5.Toolbar:包含一系列不同方法,最常用的方法通常是Play。
6.Viewport:關卡場景視窗。你可以通過長按右鍵並移動滑鼠旋轉視角。長按右鍵並使用WASD鍵移動視角。

匯入資源

作為一個轉檯卻沒有任何東西可展示有什麼意思?下載香蕉模型。下載包裡有兩個檔案:Banana_Model.fbx 和Banana_Texture.jpg。你當然也可以用別的模型來完成這個例子,但你都有一根屌炸天的香蕉了,完全不用多此一舉。

你需要先匯入香蕉模型,才可以在Unreal Engine引擎裡使用。點選Content Browser的Import按鈕。

在彈出的檔案瀏覽器裡,跳轉到香蕉模型資料夾,選中兩個檔案後點擊Open。

Unreal Engine引擎會彈出.fbx檔案的匯入選項面板。確保Import Materials是未勾選狀態,因為我們要自己建立材質。其他設定可以不用管。

點選Import。現在Content Browser裡就會出現這兩個檔案。

當做完前面的操作,這些資源還並沒有真正儲存進專案裡。我們需要右鍵點選檔案,選擇Save。也通過點選面板的File\Save All儲存所有匯入資源。記得養成時常手動儲存資源的習慣。

注意在Unreal Engine引擎裡,模型稱之為網格。所以現在我們有了個香蕉網格,是時候把它放進場景裡了。

關卡中新增網格

關卡場景現在還是空空的,所以讓我們把它豐富起來。

通過左鍵把Banana_Model從Content Browser拖拽到Viewport裡。釋放左鍵,網格就放置到關卡里了。

我們可以移動、旋轉、縮放關卡里的物體,與之對應的快捷鍵是W,E,R。配合快捷鍵和滑鼠,就可以這樣調整香蕉網格了:

關於材質

如果你仔細觀察香蕉,就會發現它不是黃色的!事實上,它看起來像已經過期發黑了。

為了賦予香蕉一些色彩和細節,你需要建立一個材質。

什麼是材質?

材質決定了物體的視覺外觀。基本上,材質會影響以下四個外觀屬性:

  • 底色(Base Color):材質的基本色。用來決定物體的外觀顏色。
  • 金屬度(Metallic):決定物體表面的金屬質感。通常來說,純金屬的金屬度值是最大的,而紡織品的金屬度為0。
  • 高光(Specular):控制非金屬表面的光澤度。比如,陶瓷製品會有比較強的高光,而黏土則沒有。
  • 粗糙度(Roughness):如果物體表面的粗糙度越高,光澤度就越低。通常來說,岩石和木頭表面的粗糙度就很高。

下面是三種不同材質的外觀例子。它們有著相同的顏色,不同的外觀屬性。每種材質對應的屬性都調成了最大值,而其他屬性都設定為0。

建立材質

我們可以通過在Content Browser點選Add New按鈕,彈出可建立資源的列表選單。點選Material。

將材質命名為**Banana_Material **,並雙擊開啟材質編輯選單。

材質編輯器

材質編輯器由四個主要面板構成:

  • 1. Graph:這個面板包含了你的所有節點和結果節點。通過長按右鍵和移動滑鼠來移動,滑動滾輪來縮放面板。
  • 2. Details:展示選中節點的詳細屬性。如果沒有選中任何節點,面板會展示材質的詳細屬性。
  • 3.Viewport:材質的預覽介面。通過長按左鍵和移動滑鼠來移動,滑動滾輪來縮放面板。
  • 4. Palette:當前材質可用的節點列表。

什麼是節點?

在開始製作材質前,你需要了解制作材質的基本元素:節點。

節點構成了材質的整體。材質可以擁有很多種型別的節點,各自具備不同功能。

節點擁有輸入和輸出,看起來像個帶箭頭的圓圈。左側是輸入,右側是輸出。

下面這個例子,用了個Multiply和Constant3Vector節點將貼圖改成了黃色:

材質有一個特殊的結果節點,這個節點從材質建立一開始就存在,是材質的最後一個節點。這個節點怎麼連線,會直接影響材質的最終呈現效果。

新增貼圖

為了給模型新增顏色和細節,我們需要新增貼圖。貼圖就是一張2D圖片。簡單來講,2D貼圖被對映覆蓋在3D模型上,從而賦予模型顏色和細節。

我們使用Banana_Texture.jpg來作為香蕉的貼圖。TextureSample節點可以用於設定貼圖。

在Palette面板搜尋TextureSample。通過長按左鍵節點將其拖拽到圖表區域。

選中**TextureSample **節點,在Details面板點選Texture屬性欄右側的下拉框。

下拉選單會展示專案裡的所有可用貼圖。選中Banana_Texture。

為了在預覽網格看到貼圖,你需要將節點連線接入結果節點。左鍵長按TextureSample節點的白色輸出引腳,將其拖拽到結果節點的Base Color輸入引腳。

此時觀察Viewport預覽網格的貼圖,通過長按左鍵拖拽就可以旋轉網格,全方位觀察它的細節。

點選Toolbar上的Apply按鈕,就能更新材質設定。

使用材質

為了在香蕉網格應用材質,我們需要進一步手動操作。在Content Browser雙擊Banana_Model,會出現下面編輯器視窗:

觀察Details面板的Materials選項,點選Element 0右側的下拉框,並選擇Banana_Material。

關閉視窗,回到主編輯器,觀察Viewport,你能看到香蕉已經有了貼圖。恭喜你,你已經具備一個關卡設計師的所需技能了!

注意:如果光線看起來太暗了,你可以通過在World Outliner面板點選Light Source,在Details面板修改Intensity為更大的值進行調整。

關於藍圖

雖然香蕉看起來不錯,如果它能放在轉檯上展示會更不錯。我們通過藍圖就可以實現這點。

簡單化理解,一個藍圖代表一個“東西”。藍圖可以賦予“東西”一些自定義行為。“東西”可以是個實物(比如轉檯),或是抽象概念,比如血條系統。

想要一臺能跑起來的車?做個藍圖吧。一頭飛豬?藍圖。炸上天的廚房?還是藍圖。

類似於材質系統,藍圖也是個節點系統。這意味著你所需要做的是建立一些節點並做做連線,完全不需要編寫程式碼!

注意:如果你更願意寫程式碼,你可以使用C++編寫。

雖然藍圖便捷易用,它的執行效率不如C++程式碼。所以,如果你要實現一些大量運算的邏輯,比如複雜演算法,還是應該用C++。

不過即使你更傾向於用C++,在一些場景下使用藍圖是個好主意。以下是使用藍圖的好處:

  • 通常來講,藍圖開發效率優於C++。
  • 直觀清晰。你可以將節點劃分成不同區域,比如不同的方法和圖表。
  • 如果你跟非開發人員協同合作,得益於藍圖的可視、直觀,雙方修改藍圖邏輯會更加簡單。

儘量嘗試用藍圖建立邏輯,當有部分邏輯需要提升執行效率時,再將其轉換成C++程式碼。

建立藍圖

在Content Browser點選Add New按鈕,從下拉列表中點選Blueprint Class。

緊接著會出現提示框讓你選擇新建藍圖類所要繼承的父類。藍圖類會繼承父類的所有變數,函式及元件。讓我們花一點時間看每個類是做什麼的。

注意:因為Pawn和Character類也能夠被放置、生成,它們也同屬於Actor。

因為轉檯只需要靜止放置在一個固定點上,所以Actor類是最合適的。選擇Actor並將其命名為Banana_Blueprint。

最後,雙擊Banana_Blueprint,出現以下面板時點選Open Full Blueprint Editor:

藍圖編輯器

首先,確保編輯器介面頁籤選中Event Graph。

藍圖編輯器由以下五個面板組成:

1.Components:包含當前藍圖已用元件列表。
2.My Blueprint:該面板主要用於管理你的圖表,方法和變數。
3.Details:展示選中項的詳細引數。
4.Graph:化腐朽為神奇的部分。所有的節點邏輯都在這裡。通過長按右鍵和移動滑鼠來移動,滑動滾輪來縮放面板。
5.Viewport:所有包含可視元素的元件都會顯示在這裡。操作方法類同主編輯器的Viewport介面。

建立轉檯

轉檯由兩部分組成:底座和展示物體。我們可以通過元件建立這兩者。

什麼是元件?

如果一個藍圖是一輛車,那元件就是這輛車的零部件。車門,方向盤和引擎都是元件。

然而,元件的概念也不限於實際物體。

比如,為了開動這輛車,你還會給它加上運動元件,甚至還能通過新增飛行元件使得車子飛起來。

新增元件

首先,我們先把頁籤切換到Viewport,把介面切到場景展示。看起來是這樣的:

注意:當引擎處於執行模式時,DefaultSceneRoot元件是看不到的,它只會在編輯模式下展示。

轉檯有兩個元件:

  • 圓柱體(Cylinder):一個簡單的白色圓柱體作為底層,用於盛放香蕉。
  • 靜態網格(Static Mesh):這個元件用於展示香蕉網格。

為了新增元件,在Components面板點選Add Component並選擇Cylinder。

把底座調矮點,視覺效果看起來會更好點。按下R鍵啟用縮放操作杆,並滑動對應軸調整底座高度。

接著來新增網格。在Components面板左鍵點選空白區域,取消選中Cylinder元件。這樣就保證後面新加的元件不會放在Cylinder元件下。

注意:如果你不這樣,後面新加的元件就會放在Cylinder元件下,這意味著這個元件會繼承Cylinder元件的縮放值。由於你縮放過圓柱體,這樣做的結果就是新加的香蕉模型也會跟著一起縮放。

接著,點選Add Component並選擇Static Mesh。

為了顯示香蕉的樣子,選擇Static Mesh元件並點選Details頁籤。點選Static Mesh選項右側的下拉框,選擇Banana_Model。

如果香蕉的位置不太對,就按下W鍵啟用移動操作杆,調整香蕉的位置。

關於藍圖節點

是時候讓轉檯轉起來了。這裡就涉及到藍圖節點的使用。

不同於它的表親材質節點,藍圖節點有一種特殊引腳叫執行引腳。節點左側是輸入引腳,右側是輸出引腳。所有的節點都至少會有輸入/輸出引腳的其中一種。

如果一個節點有輸入引腳,它一定要有個對應的接入才能被執行。如果它的輸入引腳沒有連線,它的後續節點也不可能被執行。

這裡是個例子:

節點A和節點B因為其有連線,所以能夠執行。由於節點C輸入引腳沒有連線,節點C和節點D都不會執行。

旋轉轉檯

在我們動手前,先看看Components面板。你能夠看到Cylinder和Static Mesh元件是有縮排的,DefaultSceneRoot則沒有。這樣因為前兩者是DefaultSceneRoot節點的子節點。

如果移動、旋轉、縮放根節點,子節點也會一起影響。利用這個特性,你就能一併控制Cylinder和Static Mesh了。

建立節點

為了編寫邏輯,我們把頁籤切換到Event Graph.

旋轉物體非常簡單,只需要建立一個節點就能完成。在圖表介面空白處右鍵彈出可用節點選單,搜尋AddLocalRotation節點。由於我們想要一併旋轉底座和香蕉,直接旋轉根元件節點即可。因此選擇AddLocalRotation (DefaultSceneRoot)。

注意:如果看不到對應節點,請反選右上角的Context Sensitive選項。

你的圖表現在有了一個新的名為AddLocalRotation的節點了。它的Target輸入會自動連線你所選擇的元件。

將Delta Rotation的z值修改為1.0,這樣藍圖就會讓目標圍繞Z軸進行旋轉。值越大,轉檯旋轉越快。

為了持續旋轉轉檯,你需要每幀呼叫AddLocalRotation。為了實現這點,需要使用上Event Tick節點。它應該預設就在你的圖表裡。如果沒有,就仿照剛才的操作建立節點。

拖拽Event Tick節點的輸出引腳連線AddLocalRotation節點的輸入引腳。

注意:在這個例子中,轉檯旋轉速度取決於幀率。這意味著轉檯在低配機器上會旋轉得更慢,反之亦然。這對於教程來說沒什麼大問題,這樣處理會比較簡單,我會在之後的教程裡教你解決這個問題。

最後,點選Toolbar的Compile按鈕更新藍圖修改,並關閉編輯器。

在關卡里新增藍圖

在新增藍圖前,在主編輯器的Viewport視窗刪除之前放置的香蕉模型。選中香蕉模型,點選Eidt\Delete或者按下Delete鍵進行刪除。

新增藍圖的步驟功能跟之前新增網格的步驟是一樣的。左鍵拖拽藍圖檔案,將其放置到Viewport視窗。

在Toolbar上點選Play按鈕,就可以看到最終成果了!

注意:如果你沒有刪除掉關卡的香蕉模型,你可以會看到重建光線的警告提示。刪掉模型,就能去掉警告。

後續學習

你可以在這裡下載教程專案。

本篇教程所學習的內容只是Unreal Engine 4引擎的冰山一角。如果你還想繼續學習Unreal Engine 4引擎,點選下篇教程,我會進一步講解Unreal Engine 4引擎的藍圖系統。

&n