難度:中級
設置專案
首先,我們需要安裝並打開Unity編輯器。塔防模板可以從資源商店窗口下載,或是開啟時就可參考下圖下載:
為了本教程的目的,我們將使用一個空白場景。入門套件附帶了幾個預先製作的場景,你可以查看和比較自己的作品。
塔

介紹
塔防遊戲中最重要的元素是塔。在塔防模板中,我們使用兩個關鍵元素來創建塔。第一個是塔元件 ( tower component,),它定義了塔的基本功能。第二個是塔等級元件 ( TowerLevel component ),它定義塔在升級時的行為方式。
創建一座塔
讓我們從頭開始創建一座新塔。
在我們創建塔遊戲物件之前,我們必須創建數據物件,以儲存有關它在不同級別的行為方式的數據。這些物件稱為塔等級數據可程式物件 ( TowerLevelData ScriptableObjects )。
我們首先創建一個塔等級數據可程式物件來儲存有關一級塔的數據。
- 在 Project 視窗口中,點擊左上角的 Create,然後選擇 Create > Tower Defense > Tower Configuration。
- 為可程式物件指定一個由其類型和等級別編號組成的名稱(例如,Laser1)
- 將可程式物件放在 Data/Tower 資料夾中
- 設置塔名稱、生命值和價格 ( name, health and price )
- 在 Project 視窗口中,點擊左上角的 Create,然後選擇 Create > Tower Defense > Tower Configuration。
- 為可程式物件指定一個由其類型和等級別編號組成的名稱(例如,Laser2)
- 將可程式物件放在 Data/Tower 資料夾中
- 設置塔名稱、描述(升級到此級別時顯示)、生命值和價格 ( name, health and price )
讓我們為一級塔創建一個塔等級預製體。
- 在 Hierarchy 視窗中,點擊 Create,然後選擇 Create > Create Empty
- 為新的遊戲物件指定一個名稱以指示其塔類型和等級(例如,LaserTower_1)
- 添加 TowerLevel 元件到遊戲物件
- 將此塔等級的可程式物件拖到 Level Data 欄位
- 添加代表塔的模型作為遊戲物件子物件(例如拖曳Models/Towers/Laser/LaserTower_BASE_L01到遊戲物件項目下方)
- 在 Prefabs/Towers中為塔建立一個資料夾
- 將遊戲物件從 Hierarchy 視窗中拖動到新建的資料夾中,使其成為預製體
- 在 Hierarchy 視窗中,點擊 Create,然後選擇 Create > Create Empty
- 為新的遊戲物件指定一個名稱以指示其塔類型和等級(例如,LaserTower_2)
- 添加 TowerLevel 元件到遊戲物件
- 將此塔等級的可程式物件拖到 Level Data 欄位
- 添加代表塔的模型作為遊戲物件子物件(例如拖曳Models/Towers/Laser/LaserTower_BASE_L02到遊戲物件項目下方)
- 在 Prefabs/Towers中為塔建立一個資料夾
- 將遊戲物件從 Hierarchy 視窗中拖動到新建的資料夾中,使其成為預製體
- 打開一個新場景
- 創建一個空的遊戲物件
- 將遊戲物件名稱設置為 NewTower
- 將 Tower元件添加到 NewTower 遊戲物件
- 添加一個適當的 Collider 元件,將塔的網格封裝到 NewTower 遊戲物件中
- 將 DamageCollider 元件添加到 NewTower 遊戲物件

DamageCollider 元件將處理與具有 Damagers 對象的碰撞(請參閱動作遊戲框架)。
現在我們可以在 NewTower 遊戲物件上設定 Tower 元件。
- 將 Data/Alignments/ Player 可程式物件拖入 Alignment 欄位
- 如有必要,設置 Target Transform 欄位
- 設置 Levels 將項目下的 Size 欄位為所需的 TowerLevel 物件數
- 將此塔的 TowerLevel 預製體拖動到 Element 欄位
- 在 Tower Name 欄位輸入塔的名稱
- 在 Dimensions 項目下設置 X 和 Y 值,以設置塔需要在放置網格上的空間大小
- 拖曳 Prefabs/UI/HealthBar 作為 Tower GameObject 遊戲物件的子物件
了解 Tower 元件
Tower 元件允許我們設置塔的所有等級別共有的數值,並設置對包含各等級數據的塔等級預製體。

設定
Max Health
塔的最大生命值。
請注意,如果塔等級預製體指定給一級塔,則此處設置的值將被該塔等級元件的 MaxHealth 值覆蓋。
Starting Health
塔的起始生命值。
請注意,如果塔等級可程式物件指定給一級塔,則此處設置的值將被塔等級可程式物件的StartingHealth 值覆蓋。
Alignment
Alignment 確定塔將射擊的潛在目標。我們通過對 SimpleAlignment 可程式物件的參照來設置。
起始工具包提供了兩個 SimpleAlignment 可程式物件:
- 玩家 - 塔將射擊敵方單位。
- 敵人 - 對有玩家 Alignment 的任何東西射擊。
要創建更多的 Alignments ,請從 Project 視窗口中選擇 Create > Starter Kit > Simple Alignment。或者,如果我們需要更複雜的邏輯,我們可以實現我們自己的 IAlignmentProvider程式版本。
Target Transform
通常當塔或代理互相瞄準時,他們將瞄准對方 transform 的原點。Target Transform允許我們設置一個替換點。
Levels
在這裡,我們可以設置塔具有的等級數,並將塔等級預製體(下面有更多細節)與塔元件連結。
Tower Name
此欄位允許我們輸入顯示給玩家的塔名稱。
Tower Description
此欄位允許我們輸入顯示給玩家的塔簡短描述。我們可以用這個來告訴玩家塔的目的和能力。
Dimensions
在這裡,我們可以設置塔在放置網格上佔用多少空間。
Enemy Layer Mask
決定塔可以瞄準的物理層。
了解塔等級數據可程式物件

Description
這是一個短字串,當用戶選擇此類型的塔時,它將顯示在 UI 上。
Upgrade Description
用於通知使用者塔升級時會更改的內容短字符。需要注意的重要一點是,升級到此等級塔時會顯示,因此一級塔不需要。
Cost
指玩家購買或升級到這個級別塔所需的費用。
Sell
指玩家在遊戲中出售塔所得的金額。
賣出通常低於購買,但不一定得如此。請注意,在範例專案中,較高級別塔的銷售價考慮了玩家在所有塔級別上花費的累積金額。
Max Health
當塔升級到這個級別時,塔的最大生命值。
Starting Health
Icon
Icon 欄位可用於指定在 UI 中表示塔的精靈。有關此內容的更多信息以及它如何與每個級別的可用塔列表相關連,請參閱“ 設置舞台”章節。
了解 TowerLevel 元件

Tower Ghost Prefab
當玩家放置塔時顯示的預覽模型。
Build Effect Prefab
在建構或升級塔時,都將實例化此處分配的粒子效果預製體,以及其相關的音效。
LevelData
包含此塔等級的塔等級數據可程式物件。
沒有留言:
張貼留言