61
電子工程系車用電子與資訊組 Unity遊戲程式設計(01) Unity簡介 吳錫修 September 11, 2017

Unity遊戲程式設計(01) Unity簡介

  • Upload
    -

  • View
    1.091

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Unity遊戲程式設計(01) Unity簡介

電子工程系車用電子與資訊組

Unity遊戲程式設計(01)Unity簡介

吳錫修

September 11, 2017

Page 2: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Unity Technologies公司於2005年推出的⼀款功能強⼤的遊戲開發工具

4.2版以前專為3D遊戲開發而設計,稱為Unity 3D

4.3版本起增加⼀套2D遊戲開發工具包,加入2D物理引擎,重新正名為Unity;開發遊戲專案時可選擇2D或3D遊戲專案

關於Unity 1/3

2 Wu, ShyiShiou Dept. of E.E., NKUT

Page 3: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

2015年3月推出Unity 5版本

個人版 (personal):營收在10萬美元以下的用戶可免費使用

專業板 (professional):每月75美元起

關於Unity 2/3

3 Wu, ShyiShiou Dept. of E.E., NKUT

Page 4: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

2017年7月推出Unity 2017.1版本

Timeline視覺化工具,可用於創建影視內容,例如過場動畫、預告片、遊戲試玩視頻等

Cinemachine相機系統,您可以像電影導演⼀樣,在Unity中合成鏡頭,無需編寫任何代碼

Post-processing可以很方便地為場景應用各種逼真濾鏡,使用電影工業級技術、控制項和顏色空間格式來創造高品質視覺效果

關於Unity 3/3

4 Wu, ShyiShiou Dept. of E.E., NKUT

Page 5: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

https://unity3d.com/cn/get-unity/download/archive

下載unity軟體 1/2

5 Wu, ShyiShiou Dept. of E.E., NKUT

Page 6: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

下載unity軟體 2/2

6 Wu, ShyiShiou Dept. of E.E., NKUT

Page 7: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

註冊Unity ID

7 Wu, ShyiShiou Dept. of E.E., NKUT

Page 8: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

範例專案

8 Wu, ShyiShiou Dept. of E.E., NKUT

Page 9: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

教學專案

9 Wu, ShyiShiou Dept. of E.E., NKUT

Page 10: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Unity編輯環境 1/2

10 Wu, ShyiShiou Dept. of E.E., NKUT

階層面板

專案面板及控制台面板

場景面板及遊戲面板

屬性面板

工具列系統選單

Page 11: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

功能選單Window\Layouts可選用不同的版面配置

系統選單:控制Unity的設定與調整遊戲專案

工具列:包含變形工具、撥放控制及功能面板排列操作工具

階層面板 (Hierarchy):列出場景中的所有遊戲物件及彼此之間的階層關係

專案面板 (Project) 及控制台面板 (Console):顯示專案內的素材及除錯訊息

場景面板 (Scene) 及遊戲面板 (Game):編輯場景及遊戲執行的顯示

屬性面板 (Inspector):檢視及調整物件的屬性

Unity編輯環境 2/2

11 Wu, ShyiShiou Dept. of E.E., NKUT

Page 12: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

顯示目前場景中的所有物件,並依照物件間的階層關係排列

例如最上層物件有攝影機 (Cameras)、車子 (Car)、燈光 (Lighta)…

車子物件包括碰撞器 (Colliders)、輪轂 (WheelsHubs)…

階層面板 (Hierarchy) 1/2

12 Wu, ShyiShiou Dept. of E.E., NKUT

GameObject選單命令

Page 13: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

將物件拖曳到另⼀物件下,物件就被群組在⼀起,最上層物件稱為父物件,其它物件則為其子物件

⼀個不屬於任何群組的物件,是以世界座標原點為參考點;而子物件則是以其以父物件為座標原點

子物件會隨著父物件旋轉、移動、縮放

雙擊列表中的物件,可快速將視角切換到該物件位置

階層面板 (Hierarchy) 2/2

13 Wu, ShyiShiou Dept. of E.E., NKUT

Page 14: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

變形工具:對選取物件進行移動、旋轉、縮放、平面編輯 (2D物件)

工具列 1/4

14 Wu, ShyiShiou Dept. of E.E., NKUT

變形工具 遊戲撥放控制 面板排列

Unity服務

帳號作業

圖層管理群組中心與座標

平移場景(Q) 旋轉物體(E)

(T)針對一個平面進行移動、旋轉及縮放,在編輯2D物件時較常使用

移動物體(W) 縮放物體(R)

Page 15: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

群組軸心:Center表示群組以全部物件的中心做為軸心,Pivot表示以父物件中心點做為群組物件軸心

座標系統:自身座標 (Local) 的原點以及方向是以物件本身的位置及方向為基準,世界座標 (Global) 是以場景中心為原點

遊戲撥放控制

遊戲執行時,所有遊戲物件及其元件的操作都是暫時的,當停止執行後,就會恢復到執行前的狀態

工具列 2/4

15 Wu, ShyiShiou Dept. of E.E., NKUT

群組軸心 座標系統

執行遊戲 單步執行

暫停執行

Page 16: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

服務視窗:啟用/關閉Unity服務,必須先登入Unity

工具列 3/4

16 Wu, ShyiShiou Dept. of E.E., NKUT

開啟Unity服務選單

登入/登出Unity帳號

Page 17: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

圖層管理:設定專案圖層

面板排列:設定面板排列方式

工具列 4/4

17 Wu, ShyiShiou Dept. of E.E., NKUT

Page 18: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

管理專案使用到的檔案,這些檔案存在Unity專案資料夾內的Assets資料夾內

最好建立子資料夾分門別類管理不同資源類型,常用資源包括:

場景 (Scene)、預製物件 (Prefab)、程式腳本 (Script)、3D模型 (Model)、圖片 (Sprite)、音效 (Audio)、動畫 (Animation)…

專案面板 (Project)

18 Wu, ShyiShiou Dept. of E.E., NKUT

Assets/Create選單命令

Page 19: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

場景指的就是遊戲畫面,可以在這個場景視窗中擺設遊戲物件

場景面板 (Scene) 1/3

19 Wu, ShyiShiou Dept. of E.E., NKUT

圖示顯示選單2D/3D切換

場景燈光開關 天空背景關闗

音效開關

透視視圖

軸向控制器

物件繪圖選單

以名稱搜尋場景中的物件

Page 20: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

點擊軸向控制器 (Scene Gizmo) 可快速切換到不同軸的視角。點擊中心的立方體,可切換Perspective View (透視視圖) 或Isometric View (等距視圖)

場景面板 (Scene) 2/3

20 Wu, ShyiShiou Dept. of E.E., NKUT

等距視圖

Page 21: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

旋轉場景:Alt+滑鼠左鍵

拉近/拉遠場景:滑鼠滾輪或Alt+滑鼠右鍵

將物件顯示於視窗中央:

A. 在Hierarchy面板,雙擊物件

B. 在場景中點選物件後,按F鍵

第⼀人稱瀏覽(旋轉)場景:滑鼠右鍵

點選攝影機,會以子視窗顯示該攝影機視角所看到的畫面

場景面板 (Scene) 3/3

21 Wu, ShyiShiou Dept. of E.E., NKUT

Page 22: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

透過設定的Camera (相機)視角所看到的場景,模擬遊戲的執行畫面

遊戲面板 (Game) 1/2

22 Wu, ShyiShiou Dept. of E.E., NKUT

螢幕比例選單攝影機畫面選單 執行時最大化

Page 23: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

顯示遊戲的執行效能數據,包括音訊、顯卡、網路資訊

遊戲面板 (Game) 2/2

23 Wu, ShyiShiou Dept. of E.E., NKUT

開啟遊戲執行資訊

Page 24: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

檢視目前選取物件之所有可設定的屬性,包括遊戲物件屬性 (例如物件名稱、位置座標、圖層…等);以及附加在物件上的元件 (例如燈光、攝影機、碰撞器、程式腳本…等) 屬性

屬性面板 (Inspector)

24 Wu, ShyiShiou Dept. of E.E., NKUT

Page 25: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

File選單

A. 場景的新增、開啟與儲存

Unity不會自動儲存修改過的場景

B. 專案的新增、開啟與儲存

C. 專案的建置設定與建置並執行

D. 關閉Unity

系統選單 1/7

25 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

C

D

Page 26: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Edit選單

A. 場景的基本操作,例如剪下、貼上、複製與刪除等

B. Unity環境設定

C. 專案的執行、暫停與單步執行

D. 登入與登出

E. 將目前選擇的物件儲存,以便從儲存的物件清單中快速選擇物件

F. 專案環境設定

G. 網路模擬功能與圖像模擬功能

H. 最小單位設定

系統選單 2/7

26 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

C

D

EF

G

H

Page 27: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Assets選單

A. 專案素材的創建、開啟及刪除等

B. 開啟已選取的Scene,可用於比較場景相近的Scene

C. 專案素材套件管理

D. 更新當前專案至最新的Unity專案版本

E. 以預設編輯器開啟專案腳本程式

系統選單 3/7

27 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

C

DE

Page 28: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

GameObject選單

A. 遊戲物件的創建

B. 物件的從屬關係設定及預製物件的操作

C. 將選取物件與攝影機對齊

系統選單 4/7

28 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

C

Page 29: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Component選單

A. 在屬性面板開啟新增元件作業選單

B. 可創建的元件選單

系統選單 5/7

29 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

Page 30: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Window選單

A. 作業面板切換

B. 變更面板排列方式

C. 呼叫出指定的面板

系統選單 6/7

30 Wu, ShyiShiou Dept. of E.E., NKUT

A

B

C

Page 31: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Help選單

A. 關於Unity的版本、授權等資訊

B. Unity授權的管理

C. 使用手冊及API參考手冊

D. Unity官方論壇

E. 檢查更新及下載測試版

F. 版本說明及錯誤回報

系統選單 7/7

31 Wu, ShyiShiou Dept. of E.E., NKUT

AB

C

D

E

F

Page 32: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Unity提供多種預設的版面配置讓使用者自由選擇,也可以儲存當前自訂義的版面配置方式

自訂版面配置

32 Wu, ShyiShiou Dept. of E.E., NKUT

Page 33: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

選單命令File> New Project…

建立專案 1/2

33 Wu, ShyiShiou Dept. of E.E., NKUT

Page 34: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

指定專案名稱、儲存位置,以及遊戲類型 (2D或3D)

Add Asset Package:設定要附加到專案的套件。可以在專案開發過程中,需要時再匯入

建立專案 2/2

34 Wu, ShyiShiou Dept. of E.E., NKUT

Page 35: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

場景 (Scene) 就是遊戲的⼀個關卡

玩家看到的遊戲畫面通常只是場景的某⼀部份

建立專案時會自動產⽣⼀個預設場景

編輯過程中記得透過快捷鍵Ctrl-S儲存場景,副檔名.unity

新增場景

選單命令File> New Scene

場景

35 Wu, ShyiShiou Dept. of E.E., NKUT

Page 36: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

在遊戲裡登場的所有東⻄

玩家、敵人、道具、背景模型、光源、聲音、攝影機、分數…

元件

用來附加到遊戲物件上,以賦予遊戲物件特定功能,例如碰撞、重力、運動…

遊戲物件

36 Wu, ShyiShiou Dept. of E.E., NKUT

Page 37: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

攝影機決定場景從哪裡、哪個角度觀察

場景預設會自動加入⼀個攝影機物件Main Camera及方向光

Clear Flags螢幕空白部份處理方式

Skybox 螢幕空白部份顯示天空盒

Solid box 螢幕空白部份顯示攝影機底色 (Background設定值)

Depth Only 深度相機,只渲染採集到的畫面

Don't Clear 不清除顏色或深度緩衝區,疊加每幀渲染畫面

Culling Mask剔除遮罩,只渲染勾選的圖層

Background背景顏色

攝影機設定 1/5

37 Wu, ShyiShiou Dept. of E.E., NKUT

Page 38: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Projection投影方式

Orthographic 正交投影,物體沒有前後距離分別

Perspective 透視投影,物體有前後距離之分別

攝影機設定 2/5

38 Wu, ShyiShiou Dept. of E.E., NKUT

Perspective

Orthographic

Page 39: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Field of View透視投影模式時,攝影機的視野角度,預設為60

Size正交投影模式時,攝影機的視野寬度,預設為5

Clipping Planes裁切平面 (攝影機渲染區間)

Near 可視區域的起點 (與攝影機距離)

Far 可視區域的終點 (與攝影機距離)

Viewport Rect攝影機畫面顯示在螢幕的區域;螢幕左下角為原點,最上方Y=1,最右方X=1。預設攝影機畫面充滿整個螢幕

X、Y 決定顯示區域起點,預設值為0

W、H 決定顯示區域寬度及高度,預設值為1

攝影機設定 3/5

39 Wu, ShyiShiou Dept. of E.E., NKUT

Page 40: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Depth攝影機的渲染優先級別,數值越⼤優先級別越高。優先級別高的攝影機畫面會覆蓋在級別低的攝影機畫面上;Main Camera之Depth預設值為-1

Rendering Path渲染路徑,指定攝影機渲染方式

Use Graphics Settings 套用Project Settings下的Graphics設定

Forward 每個材質⼀個通道的方式來渲染

Deferred 先對所有物件進行⼀次無光照渲染,再進行光照渲染

Legacy Vertex Lt 舊版的頂點光照。將所有的遊戲物件作為頂點光照物件來渲染

Legacy Deferred 舊版的延遲光照

攝影機設定 4/5

40 Wu, ShyiShiou Dept. of E.E., NKUT

Page 41: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Target Texture指定目標紋理。將攝影機畫面輸出到⼀張Render Texture而非螢幕,可應用製作遊戲場景縮圖或畫面特效

Occlusion Culling是否剔除物體背向攝影機的部份

Allow HDR高動態光照渲染

Allow MSAA多重採樣抗鋸齒渲染 (multisample antialiasing)

攝影機設定 5/5

41 Wu, ShyiShiou Dept. of E.E., NKUT

Page 42: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Main Camera

Position (X, Y, Z) = (0, 0, -5)

選單命令GameObject> 3D Object> Sphere

Position (X, Y, Z) = (0, 0, 0)

選單命令GameObject> Camera

Position (X, Y, Z) = (0, 0, -30)

Clear Flags = Solid Color

Projection = Orthographic

Size = 3

Viewport Rect

(X, Y) = (0.8, 0.8)

(W, H) = (0.2, 0.2)

攝影機測試

42 Wu, ShyiShiou Dept. of E.E., NKUT

Page 43: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Edit選單Preferences…命令

建議使用內建的MonoDevelop編輯器

腳本編輯器

43 Wu, ShyiShiou Dept. of E.E., NKUT

Page 44: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

場景必須加入Scenes In Build清單中

選單命令File> Building Settings

using UnityEngine.SceneManagement;public class Level1 : MonoBehaviour {

void Update () {if (Input.GetMouseButtonDown(0)) SceneManager.LoadScene(“Scene2");

}}

場景切換

44 Wu, ShyiShiou Dept. of E.E., NKUT

Page 45: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

建立新專案

選單命令File> Save Scenes,將預設場景儲存為main

選單命令GameObject> 3D Object> Cube

做為分辨場景用

選單命令GameObject> CreateEmpty

更名為GameController

加入程式腳本

場景切換測試 1/5

45 Wu, ShyiShiou Dept. of E.E., NKUT

Page 46: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

編輯Main.csusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class Main : MonoBehaviour {

// Use this for initializationvoid Start () {

}

// Update is called once per framevoid Update () {

if (Input.GetMouseButtonDown(0)) SceneManager.LoadScene("level one");}

}

場景切換測試 2/5

46 Wu, ShyiShiou Dept. of E.E., NKUT

Page 47: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

選單命令File> New Scene,新增關卡1場景

選單命令File> Save Scenes,將場景儲存為level one

選單命令GameObject>3D Object> Sphere

做為分辨場景用

選單命令GameObject> CreateEmpty

更名為GameController

加入程式腳本

場景切換測試 3/5

47 Wu, ShyiShiou Dept. of E.E., NKUT

Page 48: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

編輯Level_one.csusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class Level_one : MonoBehaviour {

// Use this for initializationvoid Start () {

}

// Update is called once per framevoid Update () {

if (Input.GetMouseButtonDown(0)) SceneManager.LoadScene("main");}

}

儲存場景level one.unity

場景切換測試 4/5

48 Wu, ShyiShiou Dept. of E.E., NKUT

Page 49: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

選單命令File> Building Settings,將main及level one場景加入Scenes In Build清單中

執行測試

點擊滑鼠左鍵可切換場景

場景切換測試 5/5

49 Wu, ShyiShiou Dept. of E.E., NKUT

Page 50: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

以下程式按Esc鍵時結束遊戲程式

if (Input.GetKey (KeyCode.Escape)) {Application.Quit ();

}

註:需建立執行檔測試

結束應用程式

50 Wu, ShyiShiou Dept. of E.E., NKUT

Page 51: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Unity Asset Store有非常豐富的套件,其中不乏免費資源。由Asset Store面板搜尋想要的Unity範例,例如Survival Shooter

下載官方資源 1/5

51 Wu, ShyiShiou Dept. of E.E., NKUT套件的價格會不定期調整

Page 52: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

點擊Download

下載官方資源 2/5

52 Wu, ShyiShiou Dept. of E.E., NKUT

Page 53: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

登錄Unity帳號

下載官方資源 3/5

53 Wu, ShyiShiou Dept. of E.E., NKUT

Page 54: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

等待下載並解壓

已下載過的套件會儲存在c:\Users\用戶名稱\AppData\Roaming\Unity\Asset Store-5.x目錄下

下載官方資源 4/5

54 Wu, ShyiShiou Dept. of E.E., NKUT

Page 55: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

選取要滙入要專案的資源,再點擊Import按鈕

下載官方資源 5/5

55 Wu, ShyiShiou Dept. of E.E., NKUT

Page 56: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

了解遊戲引擎事件程序的執行流程,才能正確安排程式腳本,調校遊戲效能

https://docs.unity3d.com/Manual/ExecutionOrder.html

事件函式執行流程 1/3

56 Wu, ShyiShiou Dept. of E.E., NKUT

Page 57: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

事件函式執行流程 2/3

57 Wu, ShyiShiou Dept. of E.E., NKUT

Page 58: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

事件函式執行流程 3/3

58 Wu, ShyiShiou Dept. of E.E., NKUT

Page 59: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

專案內容可以封裝成Unitypackage檔,來備份專案的進度或移植到其它電腦上使用

Assets選單Export Package…命令

匯出package

59 Wu, ShyiShiou Dept. of E.E., NKUT

Page 60: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

Files選單Build Settings命令

設定遊戲場景

選擇遊戲平台

點擊Build按鈕

建立執行檔

60 Wu, ShyiShiou Dept. of E.E., NKUT

Page 61: Unity遊戲程式設計(01) Unity簡介

shap

e th

e fu

ture

https://docs.unity3d.com/Manual/index.html

線上手冊

61 Wu, ShyiShiou Dept. of E.E., NKUT