電子工程系車用電子與資訊組
Unity遊戲程式設計(01)
Unity簡介
吳錫修
September 11, 2017
shapethefuture
 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
shapethefuture
 2015年3月推出Unity 5版本
 個人版 (personal):營收在10萬美元以下的用戶可免費使用
 專業板 (professional):每月75美元起
關於Unity 2/3
3 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 2017年7月推出Unity 2017.1版本
 Timeline視覺化工具,可用於創建影視內容,例如過場動畫、預告片、
遊戲試玩視頻等
 Cinemachine相機系統,您可以像電影導演⼀樣,在Unity中合成鏡頭,
無需編寫任何代碼
 Post-processing可以很方便地為場景應用各種逼真濾鏡,使用電影工
業級技術、控制項和顏色空間格式來創造高品質視覺效果
關於Unity 3/3
4 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 https://unity3d.com/cn/get-unity/download/archive
下載unity軟體 1/2
5 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
下載unity軟體 2/2
6 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
註冊Unity ID
7 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
範例專案
8 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
教學專案
9 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
Unity編輯環境 1/2
10 Wu, ShyiShiou Dept. of E.E., NKUT
階層面板
專案面板及控制台面板
場景面板及遊戲面板
屬性面板
工具列
系統選單
shapethefuture
 功能選單WindowLayouts可選用不同的版面配置
 系統選單:控制Unity的設定與調整遊戲專案
 工具列:包含變形工具、撥放控制及功能面板排列操作工具
 階層面板 (Hierarchy):列出場景中的所有遊戲物件及彼此之間的階
層關係
 專案面板 (Project) 及控制台面板 (Console):顯示專案內的素材及
除錯訊息
 場景面板 (Scene) 及遊戲面板 (Game):編輯場景及遊戲執行的顯示
 屬性面板 (Inspector):檢視及調整物件的屬性
Unity編輯環境 2/2
11 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 顯示目前場景中的所有物件,並依照物件間的階層關係排列
 例如最上層物件有攝影機 (Cameras)、車子 (Car)、燈光 (Lighta)…
 車子物件包括碰撞器 (Colliders)、輪轂 (WheelsHubs)…
階層面板 (Hierarchy) 1/2
12 Wu, ShyiShiou Dept. of E.E., NKUT
GameObject選單命令
shapethefuture
 將物件拖曳到另⼀物件下,物件就被群組在⼀起,最上層物件稱為
父物件,其它物件則為其子物件
 ⼀個不屬於任何群組的物件,是以世界座標原點為參考點;而子物
件則是以其以父物件為座標原點
 子物件會隨著父物件旋轉、移動、縮放
 雙擊列表中的物件,可快速將視角切換到該物件位置
階層面板 (Hierarchy) 2/2
13 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 變形工具:對選取物件進行移動、旋轉、縮放、平面編輯 (2D物件)
工具列 1/4
14 Wu, ShyiShiou Dept. of E.E., NKUT
變形工具 遊戲撥放控制 面板排列
Unity服務
帳號作業
圖層管理群組中心與座標
平移場景(Q) 旋轉物體(E)
(T)針對一個平面進行移動、旋轉及縮放,在
編輯2D物件時較常使用
移動物體(W) 縮放物體(R)
shapethefuture
 群組軸心:Center表示群組以全部物件的中心做
為軸心,Pivot表示以父物件中心點做為群組物件
軸心
 座標系統:自身座標 (Local) 的原點以及方向是以
物件本身的位置及方向為基準,世界座標 (Global)
是以場景中心為原點
 遊戲撥放控制
 遊戲執行時,所有遊戲物件及其元件的操作都是暫
時的,當停止執行後,就會恢復到執行前的狀態
工具列 2/4
15 Wu, ShyiShiou Dept. of E.E., NKUT
群組軸心 座標系統
執行遊戲 單步執行
暫停執行
shapethefuture
 服務視窗:啟用/關閉Unity服務,必須先登
入Unity
工具列 3/4
16 Wu, ShyiShiou Dept. of E.E., NKUT
開啟Unity服務選單
登入/登出Unity帳號
shapethefuture
 圖層管理:設定專案圖層
 面板排列:設定面板排列方式
工具列 4/4
17 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 管理專案使用到的檔案,這些檔案存在Unity專案資料夾內的Assets
資料夾內
 最好建立子資料夾分門別類管理不同資源類型,常用資源包括:
 場景 (Scene)、預製物件 (Prefab)、程式腳本 (Script)、3D模型 (Model)、
圖片 (Sprite)、音效 (Audio)、動畫 (Animation)…
專案面板 (Project)
18 Wu, ShyiShiou Dept. of E.E., NKUT
Assets/Create選單命令
shapethefuture
 場景指的就是遊戲畫面,可以在這個場景視窗中擺設遊戲物件
場景面板 (Scene) 1/3
19 Wu, ShyiShiou Dept. of E.E., NKUT
圖示顯示選單2D/3D切換
場景燈光開關 天空背景關闗
音效開關
透視視圖
軸向控制器
物件繪圖選單
以名稱搜尋場景中的物件
shapethefuture
 點擊軸向控制器 (Scene Gizmo) 可快速切換到不同軸的視角。點擊
中心的立方體,可切換Perspective View (透視視圖) 或Isometric
View (等距視圖)
場景面板 (Scene) 2/3
20 Wu, ShyiShiou Dept. of E.E., NKUT
等距視圖
shapethefuture
 旋轉場景:Alt+滑鼠左鍵
 拉近/拉遠場景:滑鼠滾輪或Alt+滑鼠右鍵
 將物件顯示於視窗中央:
A. 在Hierarchy面板,雙擊物件
B. 在場景中點選物件後,按F鍵
 第⼀人稱瀏覽(旋轉)場景:滑鼠右鍵
 點選攝影機,會以子視窗顯示該攝影機視角所看到的畫面
場景面板 (Scene) 3/3
21 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 透過設定的Camera (相機)視角所看到的場景,模擬遊戲的執行畫面
遊戲面板 (Game) 1/2
22 Wu, ShyiShiou Dept. of E.E., NKUT
螢幕比例選單攝影機畫面選單 執行時最大化
shapethefuture
 顯示遊戲的執行效能數據,包括音訊、顯卡、網路資訊
遊戲面板 (Game) 2/2
23 Wu, ShyiShiou Dept. of E.E., NKUT
開啟遊戲執行資訊
shapethefuture
 檢視目前選取物件之所有可設定的屬
性,包括遊戲物件屬性 (例如物件名稱、
位置座標、圖層…等);以及附加在物
件上的元件 (例如燈光、攝影機、碰撞
器、程式腳本…等) 屬性
屬性面板 (Inspector)
24 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 File選單
A. 場景的新增、開啟與儲存
 Unity不會自動儲存修改過的場景
B. 專案的新增、開啟與儲存
C. 專案的建置設定與建置並執行
D. 關閉Unity
系統選單 1/7
25 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
D
shapethefuture
 Edit選單
A. 場景的基本操作,例如剪下、貼上、
複製與刪除等
B. Unity環境設定
C. 專案的執行、暫停與單步執行
D. 登入與登出
E. 將目前選擇的物件儲存,以便從儲存
的物件清單中快速選擇物件
F. 專案環境設定
G. 網路模擬功能與圖像模擬功能
H. 最小單位設定
系統選單 2/7
26 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
D
E
F
G
H
shapethefuture
 Assets選單
A. 專案素材的創建、開啟及刪除等
B. 開啟已選取的Scene,可用於比較場
景相近的Scene
C. 專案素材套件管理
D. 更新當前專案至最新的Unity專案版本
E. 以預設編輯器開啟專案腳本程式
系統選單 3/7
27 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
D
E
shapethefuture
 GameObject選單
A. 遊戲物件的創建
B. 物件的從屬關係設定及預製物件的操
作
C. 將選取物件與攝影機對齊
系統選單 4/7
28 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
shapethefuture
 Component選單
A. 在屬性面板開啟新增元件作業選單
B. 可創建的元件選單
系統選單 5/7
29 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
shapethefuture
 Window選單
A. 作業面板切換
B. 變更面板排列方式
C. 呼叫出指定的面板
系統選單 6/7
30 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
shapethefuture
 Help選單
A. 關於Unity的版本、授權等資訊
B. Unity授權的管理
C. 使用手冊及API參考手冊
D. Unity官方論壇
E. 檢查更新及下載測試版
F. 版本說明及錯誤回報
系統選單 7/7
31 Wu, ShyiShiou Dept. of E.E., NKUT
A
B
C
D
E
F
shapethefuture
 Unity提供多種預設的版面配置讓使用者自由選擇,也可以儲存當前
自訂義的版面配置方式
自訂版面配置
32 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 選單命令File> New Project…
建立專案 1/2
33 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 指定專案名稱、儲存位置,以及遊戲類型 (2D或3D)
 Add Asset Package:設定要附加到專案的套件。可以在專案開發
過程中,需要時再匯入
建立專案 2/2
34 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 場景 (Scene) 就是遊戲的⼀個關卡
 玩家看到的遊戲畫面通常只是場景的某⼀部份
 建立專案時會自動產⽣⼀個預設場景
 編輯過程中記得透過快捷鍵Ctrl-S儲存場景,副檔名.unity
 新增場景
 選單命令File> New Scene
場景
35 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 在遊戲裡登場的所有東⻄
 玩家、敵人、道具、背景模型、光源、聲音、攝影機、分數…
 元件
 用來附加到遊戲物件上,以賦予遊戲物件特定功能,例如碰撞、重力、
運動…
遊戲物件
36 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 攝影機決定場景從哪裡、哪個角度觀察
 場景預設會自動加入⼀個攝影機物件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
shapethefuture
 Projection
投影方式
 Orthographic 正交投影,物體沒有前後距離分別
 Perspective 透視投影,物體有前後距離之分別
攝影機設定 2/5
38 Wu, ShyiShiou Dept. of E.E., NKUT
Perspective
Orthographic
shapethefuture
 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
shapethefuture
 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
shapethefuture
 Target Texture
指定目標紋理。將攝影機畫面輸出到⼀張Render Texture而非螢幕,可應
用製作遊戲場景縮圖或畫面特效
 Occlusion Culling
是否剔除物體背向攝影機的部份
 Allow HDR
高動態光照渲染
 Allow MSAA
多重採樣抗鋸齒渲染 (multisample antialiasing)
攝影機設定 5/5
41 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 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
shapethefuture
 Edit選單Preferences…命令
 建議使用內建的MonoDevelop編輯器
腳本編輯器
43 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 場景必須加入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
shapethefuture
 建立新專案
 選單命令File> Save Scenes,將預設場景儲存為main
 選單命令GameObject> 3D Object> Cube
 做為分辨場景用
 選單命令GameObject> CreateEmpty
 更名為GameController
 加入程式腳本
場景切換測試 1/5
45 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 編輯Main.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Main : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0)) SceneManager.LoadScene("level one");
}
}
場景切換測試 2/5
46 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 選單命令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
shapethefuture
 編輯Level_one.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Level_one : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0)) SceneManager.LoadScene("main");
}
}
 儲存場景level one.unity
場景切換測試 4/5
48 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 選單命令File> Building Settings,將main及level one場景加入
Scenes In Build清單中
 執行測試
 點擊滑鼠左鍵可切換場景
場景切換測試 5/5
49 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 以下程式按Esc鍵時結束遊戲程式
if (Input.GetKey (KeyCode.Escape)) {
Application.Quit ();
}
 註:需建立執行檔測試
結束應用程式
50 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 Unity Asset Store有非常豐富的套件,其中不乏免費資源。由Asset
Store面板搜尋想要的Unity範例,例如Survival Shooter
下載官方資源 1/5
51 Wu, ShyiShiou Dept. of E.E., NKUT
套件的價格會不定期調整
shapethefuture
 點擊Download
下載官方資源 2/5
52 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 登錄Unity帳號
下載官方資源 3/5
53 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 等待下載並解壓
 已下載過的套件會儲存在c:Users用戶名稱AppDataRoaming
UnityAsset Store-5.x目錄下
下載官方資源 4/5
54 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 選取要滙入要專案的資源,再點擊Import按鈕
下載官方資源 5/5
55 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 了解遊戲引擎事件程序的執行流程,才能正確安排程式腳本,調校
遊戲效能
 https://docs.unity3d.com/Manual/ExecutionOrder.html
事件函式執行流程 1/3
56 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
事件函式執行流程 2/3
57 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
事件函式執行流程 3/3
58 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 專案內容可以封裝成Unitypackage檔,來備份專案的進度或移植到
其它電腦上使用
 Assets選單Export Package…命令
匯出package
59 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 Files選單Build Settings命令
 設定遊戲場景
 選擇遊戲平台
 點擊Build按鈕
建立執行檔
60 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 https://docs.unity3d.com/Manual/index.html
線上手冊
61 Wu, ShyiShiou Dept. of E.E., NKUT

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