Unity Game Development

第0話 Unity基本介紹及初始準備

Lecturer:水獺

目錄(可點)

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • VS code
  • Unity Hub
  • Unity Editor&Visual Studio
  • 其他雜七雜八

需要安裝、設定什麼?

 對就,很簡單

  • 前往 https://code.visualstudio.com/
  • 選「Download For Windows」
  • 下載完成後打開,同意使用者條款
  • 瘋狂下一步之後安裝,建議都不要動
  • VS code

需要安裝什麼?

安裝完成後打開,安裝以下延伸模組:

  • C#

 

  • Unity Code Snippets
  • VS code

需要安裝什麼?

 啊,一樣蠻簡單的

  「Download For Windows」

  • 下載完成後打開,同意使用者條款
  • 下一步之後安裝,建議都不要動
  • Unity Hub

需要安裝什麼?

  • 打開Unity Hub
  • 創建/登入Unity ID
  • 若有跳出「Install Unity Editor」按下即可

按下

install Unity Editor

  • Unity Editor&Visual Studio

需要安裝什麼?

  • 若無

按下install Editor

按下install

(官方建議版)

需要安裝什麼?

  • Unity Editor&Visual Studio

先選這個就行,

其他之後有需要再裝

按下Continue

需要安裝什麼?

  • Unity Editor&Visual Studio
  • 同意使用者條款後安裝
  • 漫長的等待..
  • 隨時注意有沒有需要按繼續的視窗

按下繼續

需要安裝什麼?

  • Unity Editor&Visual Studio

選這個就好

按下安裝

需要安裝什麼?

  • Unity Editor&Visual Studio

按下

Manage license

  • Add license
  • Get a free personal license
  • Agree and get a personal edition license
  • User License

需要設定什麼?

  • 如果你的編輯器已經安裝完成

點選「New project」

創建第一個專案

點選「2D」(3D遊戲不管是對大部分人還是我都太困難了w,下學期有可能教)

按「Create project」,等他一下

改專案名稱和路徑

創建第一個專案

  • 取得授權(license)失敗
  • 創建專案失敗(開不起來等)
  • VS code提示字消失

 → 稍等一次再做嘗試 or 重裝Unity Hub

 → 重裝Unity Editor

 → 觀察VS code中的「偵錯主控台」或詢問講師,

主因可能為.NET Framework未正確安裝

or 編輯器錯誤 or 專案檔生成錯誤

or Package未更新

or 專案未使用Unity開啟/被從專案清單移除

可能遇到什麼問題?

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

一個強大的遊戲引擎

  • 開發一個遊戲需要很多雜七雜八的東西(資源、輸入、音效、物理、渲染等)
  • 需要一個工具把這些東西整合、預製
  • 可降低遊戲開發所需的時間及門檻
  • 部分遊戲公司會開發自己的遊戲引擎

Unity是什麼?

常見的遊戲引擎

Unity的優點可多了!

  • 2D、3D遊戲開發皆可兼容
  • 可使用C#、C++兩種語言
  • 支援各種平台與裝置(如Windows、Mac OS、Linux、Web、Android、iOS、PlayStation、Xbox、Wii)
  • 市佔率大、討論度高 → 學習資源多
  • 個人使用(不賺超過10萬美金)完全免費

阿遊戲引擎那麼多,

為什麼不用其他的?

Games made with Unity

Among Us、原神、糖豆人、Pokemon Go、紀念碑谷系列、空洞騎士、節奏光劍、爐石戰記...(好像還有傳說?

綜上所述,Unity算是一個比較易懂、易學、好入門,

且平台相容性高、容易應用的遊戲引擎

 

同時等到你學會了更進階的技巧,

也可以用這個引擎做出技術含量很高的遊戲

 

啊因為3D遊戲大部分人電腦應該跑不動+我沒碰過3D遊戲,

所以這學期會著重在以C#為基礎的2D遊戲開發~

Unity專案如何運作?

這是一個射擊隕石的遊戲,他有:

場景(Scene)

可以想像成一個空間

可能用來製作遊戲的各個階段或區域如:

開始畫面、遊戲畫面、商店、排行榜

每一個場景裡有很多:

Game Object(遊戲物件)

子彈

隕石

飛船

分數面板

生命面板

隕石

子彈面板

技能面板

拖尾

(面板子物件)

(面板子物件)

(面板子物件)

(面板子物件)

背景:

  • 相機
  • 事件系統

每一個場景裡有很多:

Game Object(遊戲物件)

Game Object的範圍很廣,包含遊戲中所有會用到的------

  • 角色
  • UI(按鈕等)
  • 聲音/影片播放器
  • 動畫播放器
  • 事件系統
  • 相機
  • 等...

子彈

隕石

飛船

分數面板

生命面板

隕石

子彈面板

技能面板

拖尾

(面板子物件)

(面板子物件)

(面板子物件)

(面板子物件)

背景:

  • 相機
  • 事件系統

每一個遊戲物件裡有很多:

構件(Component)

Component包含:

  • 各種Unity提供的功能元件
  • 我們自己撰寫的腳本(Script)

子彈

飛船

隕石

拖尾

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 移動&消失腳本
  • 子彈邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 玩家控制移動腳本
  • 攻擊腳本
  • 拖尾生成腳本
  • 拖尾消失腳本
  • 飛船邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 分裂&消失腳本
  • 隕石邊緣碰撞觸發腳本

Assets資料夾

隕石造型.png *11

飛船造型.png   拖尾造型.png

子彈造型.png * 5

 

 

某些Compoment需要搭配「Assets(遊戲資產)」才能發揮功能

Assets是遊戲會用的檔案包含圖片、影片、音樂、音效、腳本、動畫等...

會存在遊戲專案的資料夾裡

子彈

飛船

隕石

拖尾

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 移動&消失腳本
  • 子彈邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 玩家控制移動腳本
  • 攻擊腳本
  • 拖尾生成腳本
  • 拖尾消失腳本
  • 飛船邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 分裂&消失腳本
  • 隕石邊緣碰撞觸發腳本

而Components則需要放在Game Object裡才能運作

可以說Component是Assets的載體

Game Object是Components的載體

子彈

飛船

隕石

拖尾

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 移動&消失腳本
  • 子彈邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 玩家控制移動腳本
  • 攻擊腳本
  • 拖尾生成腳本
  • 拖尾消失腳本
  • 飛船邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 分裂&消失腳本
  • 隕石邊緣碰撞觸發腳本

Assets資料夾

隕石造型.png *11

飛船造型.png   拖尾造型.png

子彈造型.png * 5

 

隕石管理.cs   隕石被攻擊.cs

隕石邊緣碰撞.cs   隕石移動.cs

 

飛船管理.cs   飛船攻擊.cs

飛船移動.cs

拖尾生成.cs   拖尾消失.cs

 

子彈移動.cs

飛船&子彈邊緣碰撞.cs

若要實現遊戲中的各項功能

則要自己撰寫腳本操作Components中的各種數據

子彈

飛船

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • 移動&消失腳本
  • 子彈邊緣碰撞觸發腳本
  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 玩家控制移動腳本
  • 攻擊腳本
  • 拖尾生成腳本
  • 拖尾消失腳本
  • 飛船邊緣碰撞觸發腳本
if(向上箭頭被按下){
	變形.y += 1;
}

if(向左箭頭被按下){
	變形.旋轉 -= 1;
}

if(向右箭頭被按下){
	變形.旋轉 += 1;
}
if(空白鍵被按下){
	生成子彈();
}
while(計時器 < 10){
	變形.y += 10;
	計時器 += 極小值;
}
計時器 = 0;
摧毀(此子彈);

又因為腳本同時也是一個component

且Game Object下的腳本能操作變更其他Game Object下的Component

因此也可撰寫腳本與其他物件互動

飛船

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 玩家控制移動腳本
  • 攻擊腳本
  • 拖尾生成腳本
  • 拖尾消失腳本
  • 飛船邊緣碰撞觸發腳本
void 生成飛船(生成點,朝向){
	if(叫飛船的遊戲物件不存在){
		實例化(飛船預製件,生成點,朝向);
		//可由預製件複製一份數據並使其成為一個暫時的遊戲物件
	}
}

隕石

  • 變形(位置&旋轉&大小)
  • 圖片渲染器
  • (重)生成腳本
  • 分裂&消失腳本
  • 隕石邊緣碰撞觸發腳本
void 當本碰撞器碰撞另一碰撞器(碰撞事件){
	if(另一碰撞器是飛船的){
		摧毀(飛船);
		飛船管理.生成飛船(原點,朝上方);
	}
}

總而言之,Unity的運作原理大概就是:

1. 寫腳本

2. 用各種「Component 和 Asset」或

「Component和Component」間的組合

成為一個Game Object

3. 以腳本操作Component,控制Game Objects的移動、跳躍、轉向、攻擊、觸發事件等...功能

最後提醒

  1. 腳本內容⚠️純示意不要當真⚠️,真正的C#完全不是這樣寫
  2. 如果運作原理還是沒有很懂沒關係,可以來問我,之後有繼續來上課的話透過實作你也會越來越了解~
  3. 任何東西的⚠️名字不要取中文⚠️,很大機率會炸開
  4. 但⚠️​​​​​​​自己也要看的懂⚠️,有必要的話去Google翻譯,不然後面在Debug的時候不管是你或是學長心態都可能會炸

Unity介面介紹

首先是最下面的Porject介面,也就是專案空間

可以看到兩個資料夾,一個Assets,一個Packages

Assets即是前面提到的遊戲資產,可以存放各種檔案

Packages則是Unity中內建的函式庫及延伸模組的存放地,非必要勿動

你可以點選左上角選單的Assets

或對Project介面的右方空白處(橘框處)點右鍵來操作此介面

平時會較常用到的有兩個功能:Create 和 Import New Assets (綠框處)

Create可以創建如腳本及各種遊戲物件,--> Import New Assets則是將檔案匯入Assets資料夾

現在可以嘗試點選Import New Assets

然後找一張電腦裡的圖片匯入Assets資料夾

BTW更簡單的,你也可以直接把檔案拖曳進橘框範圍,就能匯入檔案了

(匯入 = 複製一份到專案空間中)

接著是左上方的Hierarchy介面

在這裡會顯示所有已經開啟的Scene以及其內包含的所有Game Object(可以選取)

新專案開啟後預設會有一個SampleScene以及一個Main Camera(遊戲畫面範圍)

同時這裡也可以拿來調整Game Object的父子關係(類似附屬),下堂課會講

要在Hierarchy裡新增Game Object

你可以按右鍵選Create Empty,創建一個空Game Object

或者也可以直接將新增的圖片拖曳進橘框範圍

就會直接新增一個附帶圖片渲染器的Game Object了

要在Hierarchy裡新增Game Object

你可以按右鍵選Create Empty,創建一個空Game Object

或者也可以直接將新增的圖片拖曳進橘框範圍

就會直接新增一個附帶圖片渲染器的Game Object了

接下來是Hierarchy右側上方的Scene介面

也可以在這裡選取物件(但如果是疊在一起的物件建議還是在Hierarchy選取才不會選不到很躁)

而且可以讓物件縮放、旋轉及調整位置

按住右鍵 or 中鍵可以拖曳改變視角、滾動滾輪可以縮放視角

左鍵可以拖曳選取,選取後可以點選左邊選單選取不同模式調整物件

BTW,Project介面的Assets拖曳到Scene一樣可以生成帶Game Object

調整模式由上而下分別是

視角移動模式(就右鍵或中鍵,蠻沒用的)

物件移動模式(可以在一個軸上移動物件)

旋轉模式(圓盤360度旋轉)

比例模式(可以由物鍵中點等比例縮放)

 矩形模式(四個端點+端點為中心的縮放,按住shift有物件移動模式的單軸向移動功能,常用)

綜合模式(綜合物件移動模式、旋轉模式及比例模式)

調整模式切換

網格開啟/關閉

鎖點開啟/關閉

然後是Scene正下方的Game介面

(大部分人應該是黏在一起,我為了方便開發調整成這樣)

這裡會顯示該Scene的Camera看到的畫面範圍中所有的東西

也就是遊戲畫面

按下上方的播放鍵(綠框,實際位置參考前面大圖)後若沒有出錯

便會自動進入此畫面

最重要的就是要在開發初期就把遊戲比例(橘框)設定好,之後才不會出事

Scene介面跟Game介面的右方是Inspector介面

這裡會顯示你選取的東西目前的屬性

如果選取Game Object,會顯示的是這個物件擁有的各Component及其內的資訊&數據

若選取的是Asset,則會顯示如材質種類等的其他資訊

你也可以在這裡編輯這些數據並在Scene&Game介面中看到實際效果

也可以為Game Object添加新的Component(綠框處)

p.s.唯一要注意的是如果在遊玩狀態(三角形按下)時編輯,數據在退出遊玩模式後不會儲存!

Scene介面跟Game介面的右方是Inspector介面

這裡會顯示你選取的東西目前的屬性

如果選取Game Object,會顯示的是這個物件擁有的各Component及其內的資訊&數據

若選取的是Asset,則會顯示如材質種類等的其他資訊

你也可以在這裡編輯這些數據並在Scene&Game介面中看到實際效果

也可以為Game Object添加新的Component(綠框處)

p.s.唯一要注意的是如果在遊玩狀態(三角形按下)時編輯,數據在退出遊玩模式後不會儲存!

變形

圖形渲染器

好奇他可以幹嘛?下堂課記得要來~

最後回頭介紹和Project介面黏在一起的Console介面

之後如果要除錯可以Debug.Log()輸出東西在這

如果有任何錯誤也會在這裡報錯

報錯分兩種

1. 紅色八角形:較嚴重錯誤,必須解決才能開始遊戲或繼續執行

2. 黃色三角形:較不嚴重,不會影響程式正常執行,如果看他不順眼再去找解方就好

按下左上角的Clear(綠框處)可以清除Console內的所有訊息

這些介面全部都可以拖曳調整,全看你怎麼看順眼&順手

如果排版爛了可以按右上角第八個Windows->Layout->Default來恢復

最後的最後,之後開發可以善用快捷鍵,會快很多~

Ctrl + C/V/Z(復原)/D(生成副本)/S(存檔)

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

本堂課內容

  • 需要安裝、設定什麼?
  • 須注意的地方?
  • 創建第一個專案
  • 可能會遇到的問題?

安裝

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

  • Unity是什麼?
  • Unity專案如何運作?
  • Unity介面介紹

Unity ?

  • 想自學怎麼辦?
  • 有哪些學習資源?
  • 如何獲取遊戲資源?

資源

想自學怎麼辦?

最好的方式就是想一個主題,並且自己著手開發

在製作遊戲的過程中Google需要的資料

或者是去挖Unity Scripting Reference

並且實際應用到遊戲中

絕對可以讓你學習到很多

接下來也會推薦一些學習資源

有什麼學習資源?

淺顯易懂的功能向教學

非常可惜的是他從2021年9月之後就沒有繼續更新了

所以觀看使用時要先確定資料是否適用

不過我有看了幾個目前是沒有太大影響~但還是要注意

這個頻道比較偏向遊戲分析

深入探討了遊戲設計、關卡設計和遊戲製作方法

主要影片類別是分析各種遊戲,找出遊戲有趣的原因

並討論什麼是好的遊戲設計,是個找設計靈感的好地方

不多說,就特別鬼,一樣是功能向教學

這個頻道的好多東西都非常吸引我,甚至有3D的教學

也有很多我會想嘗試做出來的超強功能

不過他的內容確實比較進階,可以打好基礎再嘗試

前面都是英文的,來介紹點中文的吧~

這人最大的特點就是他特別肝而且從3D起步特別猛

我認識他的原因是有一次在滑YT的時候看到他在兩天內做了一個3D遊戲 雖然內容簡單但真的是蠻強的

雖然是新頻道東西還不多 但很有潛力 而且他也很搞笑www

最近開始有2D的教學啦~可以去看看

來自官方,最準確詳盡的程式功能解釋及用法

如果看不懂可以用Google翻譯

缺點就 對 他蠻硬的 可以先看前面的一些影片

除非你真的找不到對你有幫助的 再來這裡求助吧~

一般會用這邊的

搜尋

如何獲取遊戲資源?

資源很誇張的多

有2D、3D、音效、模板等林林總總大約10萬個資源

可以利用Filter篩選免費的資源來用(綠框處Free Assets打勾)

不過因為是免費的而且公開 你用的別人可能也會用喔

但沒有要商用應該還好啦 需要的話可以來這裡找找看~

右上角(綠框處)登入前面創建的帳號之後 就可以選擇你喜歡的點進去

按下Add to my Assets(綠框處)(可能要同意合約)

打開Unity 按下左上角第八個Window --> Package Manager(綠框處)

進入Package Manager之後 這裡的東西一般不要隨便亂動(除非要更新)

點下左上角的Package:In Project(綠框處) 改成Package:My Assets

按右邊的Download(綠框處)

按下Import(綠框處)

你就能在Project頁面看到你匯入的Assets了(綠框處)!

其他素材網站

DOTOWN:由任天堂前設計師Takashi Maeda 建立的,提供像素風格的資源,蠻可愛的


Kenney:一家總部位於荷蘭的遊戲開發公司,這個網站非常強大,提供了全免費而且好看的資源,

通常是一系列一系列的,2D、3D、音訊、UI都有


CraftPix:提供GUI、關卡地圖集和角色造型集,有些需要付費,免費多是32*32以上的像素風格,也不錯看


itch.io:一個能上傳遊戲到網路上供大家遊玩的平台,也有提供遊戲的資源,大多免費,

角色造型集、關卡地圖集、音效、音樂、材質、背景、UI甚至字型都應有盡有


Game Art 2D:提供角色造型集、關卡地圖集、GUI等,部分需付費


以上網站以圖像資源居多,如果需要其他如音效等等網站的可以來找我~

Import Assets可以解壓縮之後直接拖曳整個資料夾會快很多!

Q&A&DO

建北電資Unity遊戲開發小社第0堂

By MH Yang

建北電資Unity遊戲開發小社第0堂

  • 197