
前言
在 Unity 開發【大型地圖】或【開放世界關卡】時,真正花時間的往往不是模型製作,而是【地形配置】、【物件分佈】、【環境細節反覆調整】。
當場景規模一拉大,單靠【手動擺放】或【傳統筆刷工具】,很快就會遇到效率瓶頸。
GeNa Pro 正是為了解決這類問題而誕生的關卡設計工具。它透過程序化生成系統,讓開發者能以直覺化的操作方式,在地形上快速生成【樹木】、【草地】、【建築】、【道路】,甚至是完整的興趣點(POI),大幅降低大型關卡製作的時間成本。
本篇文章將以實務角度出發,帶你完整認識 GeNa Pro 的【核心功能】、【操作邏輯】與【常見使用情境】,協助你評估這套關卡設計神器是否適合導入到實際專案中。

Unity GeNa Pro 插件介紹
GeNa Pro 是一款專注於程序化關卡與環境生成 的 Unity 插件,主要應用在【地形】、【場景】與【大型地圖】的建構流程中。
它透過【生成器(Spawner)】、【原型(Prototype)】與【條件系統】的組合,讓開發者可以依據【高度】、【坡度】、【紋理】、【遮罩】等條件,自動化生成符合地形特徵的場景內容。
相較於傳統逐一擺放物件的方式,GeNa Pro 更強調「規則導向的生成流程」。
只要事先定義好【生成條件】與【資源配置】,就能在地形上快速鋪設出具有自然分佈感的環境,並且支援【重複生成】與【結果可預測】的隨機種子機制。
這樣的設計不僅適合【開放世界】或【大型關卡】,也非常適合在開發過程中反覆調整地圖配置,並測試不同的【場景密度】與【玩法動線】。

功能特色
- 程序化生成系統,降低大型關卡製作成本
GeNa Pro 透過【生成器】與【原型系統】,將地形物件的放置流程轉為程序化規則運作,不需逐一手動調整,就能快速產生大量環境物件,特別適合【大地圖】與【重複性高的場景配置需求】。 - 多重生成條件控制,場景結果更自然
插件支援【高度】、【坡度】、【地形紋理】、【碰撞檢查】與【遮罩】等多種生成條件,可依地形特徵自動判斷物件是否適合生成,讓最終結果更貼近自然分佈,而非規則排列。 - 【模組化原型】與【裝飾器系統】,擴充彈性高
透過【原型集合】與【裝飾器(Decorator)機制】,開發者能為生成物件加入【地形平整】、【物理模擬】、【材質切換】、【子生成器】等行為,適合用來建構【村莊】、【道路】、【聚落】等複合型場景。
適用場景
- 【開放世界】與【大型地圖關卡】設計
適合用於【RPG】、【生存遊戲】或【沙盒類遊戲】,可快速【建立地形】並【配置環境】,彈性調整【場景密度】與【玩法動線】。 - 關卡原型快速【建構】與【測試】
在前期開發階段,可利用 GeNa Pro 快速鋪設測試地圖,協助設計師驗證【關卡動線】、【視野配置】與【資源分佈】,降低反覆修改的成本。 - 需要高度自動化的場景製作流程
對於團隊規模較小,或是希望將時間集中在【玩法】與【系統】設計的專案,GeNa Pro 能有效承擔環境生成工作,提升整體開發效率。

Unity GeNa Pro 插件下載安裝
Asset Store 下載連結:GeNa Pro

Unity GeNa Pro 面板介紹
總覽面板
總覽部分顯示了主要的生成器控制選項。

資源庫(Palette):生成器資源庫。這是一個包含生成器所使用的所有資源參考的 Scriptable Object。最佳實踐是為專案中使用的每個資源包建立一個資源庫,然後在多個 GeNa 產生器之間共用它。點擊"新建"按鈕可建立新的資源庫。
名稱(Name):生成器的名稱。
類型(Type):生成器的類型。可選擇一次產生資源庫中的所有原型,或每次隨機選擇一個原型進行產生。
模式(Mode):生成器的生成模式。可以是"單次點擊生成",也可以是"繪製模式生成"(點擊並拖動來控制生成流程)。根據所選模式的不同,會顯示不同的選項。
產生間隔(Flow Rate) (繪製模式):當選擇繪製模式時,兩次產生事件之間的最小距離。當您按住 Ctrl + 左鍵點擊並拖曳時,在滑鼠拖曳距離超過此值後才會觸發下一次生成。
形狀(Shape):產生區域的形狀– 圓形或方形。
隨機種子(Seed):產生器使用的隨機種子,用於初始化和設定其內部隨機數產生器。這意味著生成器能夠產生確定性的輸出結果,這對於網路遊戲非常有用。透過 API 重置產生器會使其恢復到初始的種子狀態。
範圍(Range):生成器的最大作用範圍(單位:公尺)。原型只會在以中心生成點為此半徑的範圍內產生。
投射距離(Throw Distance):產生演算法用於將生成的資產放置到場景中的距離。其具體用途因演算法而異。在繪製模式下,將其設為零可以使產生的物件精確跟隨滑鼠位置。
生成數量(Instances):每次生成時產生的原型實例數量。實際產生的實例數會在最小值和最大值之間變動。這允許連續的生成操作產生不同數量的實例,是為生成引入變化性的好方法。
注意:有時,即使設定了生成數量,根據您選擇的其他生成條件,也可能不會產生任何實例。原因是GeNa 設有安全機制,當您的生成器設定意味著無法產生任何內容時(例如,如果您使用基於邊界框的碰撞檢查,並且投射距離非常小,新物件因距離原始物件不夠遠而被其碰撞體阻擋無法產生),防止其進入無限循環。
地面生成(Spawn to Ground):啟用後,生成會相對於地形或帶有碰撞器的網格上的點擊命中點進行。
生成時間間隔(Spawn Time Interval) (ms):生成器每次內部迭代所花費的時間(單位:毫秒)。將此值設小可以使生成過程在更長時間內以更小的時間增量運行,從而對於大型生成任務,在運行時對效能的影響更小。生成是透過協程完成的。
使用大數值(Use Large Values):啟用此選項將允許您為產生設定輸入較大的數值。
放置條件面板
此部分控制用於選擇如何及在何處將原型放置到場景中的演算法。它會根據生成器的配置方式而改變。

生成類型(Spawn Type):控制新原型實例生成位置的演算法。所有距離均與"總覽"面板中設定的"投射距離"相關。
- 中心化(Centered):所有產生嘗試都將以您的點擊點為中心,在"投射距離"範圍內進行。
- 均勻分佈(Every):將在"生成範圍"內的每個位置嘗試產生。位置將從生成範圍的邊緣開始,然後以"投射距離"加上或減去"投射距離* 抖動強度"為增量進行分佈。將"抖動強度"設為零可產生直線,設定為一會產生隨機分佈的線。
- 有機生長(Organic):生成物將從生成點像有機物質一樣向外生長。想像播下一顆種子,然後看著它生長並播撒其他也成長的種子。每個生成器內部迭代都會使用每個"種子"作為基礎來投射一個新"種子",但每個"種子"會維護一個失敗計數;一旦一個種子嘗試在其周圍生成但失敗的次數超過該計數,它將不再嘗試投射新種子。這樣做的效果是,群體邊緣的生成嘗試比中間的更容易成功,從而使群體以更接近有機模式的形態擴散開來。此外,「縮放衰減"曲線會影響每個生成物體的縮放比例。縮放會從左到右應用於生成的實例,直到達到生成器總覽中設定的"生成數量」。一個很好的使用例子是生成大量樹木:最後生成的樹木(通常由於失敗計數而位於邊緣)會較小,這能很好地模擬新生長出的樹木。
- 上次生成點(Last Spawn):產生嘗試將從上次成功生成的實例的位置開始,在"投射距離"範圍內進行。
抖動強度(Jitter Strength) (均勻分佈模式):僅在生成類型選擇"均勻分佈"時顯示。控制在選擇下一個位置時注入的隨機抖動程度。值為零將根據"投射距離"產生等間距的直線;值為一將在整個投射距離範圍內隨機化下一個位置。
旋轉類型(Rotation Type):控制原型產生時圍繞 Y 軸的旋轉方式-即它的指向。原型內的單一資源將透過在其應用的總體旋轉上添加自身的偏移量來進一步調整,以保持它們相對於父原型的旋轉。
- 固定(Fixed):旋轉將固定為指定的角度。您也可以勾選"可拖曳旋轉"複選框,並按住 Shift + 左鍵點擊並拖曳滑鼠來改變旋轉角度。

- 範圍隨機(Ranged):旋轉將在最小和最大旋轉設定之間隨機化。當存在範圍時,會以一個圓弧圖示化顯示:

- 指向上一實例中心(Last Spawn Center):產生的物件將從上一次生成物件的中心指向目前生成位置進行旋轉。
- 指向上一實例最近點(Last Spawn Closest):產生的物件將從上一次生成物件的最近點指向當前生成位置進行旋轉。這對於生成柵欄等物體能獲得更好的效果。
統一縮放(Same Scale XYZ):選取時,將在 X、Y、Z 軸上使用相同的縮放比例,否則將使用特定的各軸縮放覆蓋值。
最小/最大縮放(Min & Max Scale):產生的物件將在此範圍內進行隨機縮放。
X, Y, Z 軸最小/最大縮放(Min & Max Scale X, Y, Z):產生的物件將在這些範圍內進行各軸的隨機縮放。
注意:這些縮放比例也會受到每個原型單獨設定的縮放比例的影響。實例化物件的最終縮放比例將是此處的縮放比例 * 原型的縮放比例。
生成條件面板與生成器可視化
此部分控制生成行為在何時何地可以觸發。

生成器利用您在地形或網格上 Shift+ 點擊的位置特徵,根據您設定的條件範圍,在該地形或網格上尋找相似的位置。
例如,如果您在高度 50 公尺處點擊,並設定了 20 公尺的高度範圍,那麼產生器會選擇您點擊位置上下各 10 公尺(總範圍 20 公尺)內的所有高度區域。

生成器透過視覺化功能幫助您理解生成條件的實際影響。按下 Shift + 滑鼠左鍵可以將一個位置設為視覺化來源,並根據該位置更新生成器的範圍/紋理設定。
您可以在按住 Shift 鍵的同時修改產生條件,即時查看該位置所受的影響。這是微調條件的絕佳方式。
若要查看不同位置在相同產生條件下會受到何種影響,請按下 Ctrl + Shift 並移動滑鼠。
強制產生(Force Spawn):啟用後,將始終在您點選的位置強制產生一個原型。
地面層(Ground Layer):用於控制在為生成設定地面物件時,哪些層會產生碰撞。此地面物件隨後將作為生成時物體放置的基準地面。
碰撞檢查(Check Collisions):控制生成器是否只在沒有碰撞的空間產生其原型。
- 無(None):不進行碰撞檢查。
- 點(Point):僅在產生起始點進行檢查。適用於將物體緊密成群放置。
- 邊界框(Bounds):檢查待產生物件的整個體積(邊界框)。
- 融合量(Blend Amount):將周圍物件的邊界框融合在一起,形成更平滑的平均形狀。
- 邊界擴展(Bounds Extents):這是我們放置物件的邊界框邊緣之外,用於與融合後的周圍環境進行碰撞檢查的距離。
碰撞層(Collision Layers):當選擇"點"或"邊界框"碰撞檢查時,使用此選項控制哪些圖層會被納入測試。
高度檢查(Check Height):決定高度是否作為生成器選擇是否產生原型的因素。
- 無(None):不使用高度檢查。
- 範圍(Range):僅在以視覺化或產生起始點(即您在地形或網格上 Shift/Ctrl+ 左鍵點擊的位置)的高度為中心的一定高度範圍內產生。

在此範例中,我們選擇了 6 米的高度範圍,最小高度 50 米,您可以看到 Shift+ 點擊發生的大致地形位置。可視化器顯示了它將考慮用於生成的可能位置範圍。
- 最小/最大值(Min Max):物體將被產生的最小和最大高度。
- 混合(Mixed):物體將在最小和最大高度範圍內生成,並進一步受到高度範圍的限制。
- 取得海平面(Get Sea Level):如果安裝了 Gaia,將從 Gaia 取得海平面高度並影響最低高度。
- 最小/最大生成高度(Min Max Spawn Height):物體將被生成的最小和最大高度。
- 高度範圍(Height Range):僅在以視覺化或產生起始點的高度為中心的一定高度範圍內產生。
- 視覺化(Visualize):顯示高度條件影響的視覺化效果。
坡度檢查(Check Slope):決定坡度是否作為生成器選擇是否產生原型的因素。

- 無(None):不使用坡度檢查。
- 範圍(Range):僅在以視覺化或產生起始點(即您在地形或網格上 Shift/Ctrl+ 左鍵點擊的位置)的坡度為中心的一定坡度範圍內產生。
- 最小/最大值(Min Max):物體將被產生的最小和最大坡度。
- 混合(Mixed):物體將在最小和最大坡度範圍內生成,並進一步受到坡度範圍的限制。
- 最小/最大坡度(Min Max Slope):物件將被產生的最小和最大坡度。
- 坡度範圍(Slope Range):僅在以視覺化或產生起始點的坡度為中心的一定坡度範圍內產生。

在此範例中,我們選擇了 26 度的坡度範圍,您可以看到 Shift+ 點擊發生的大致地形位置。視覺化器顯示了落在所選範圍內、它將考慮用於產生的可能位置範圍。
紋理檢查(Check Textures):決定地形紋理是否將作為生成器產生其原型的範圍依據。

- 紋理(Texture):被點選位置的紋理名稱。
- 紋理強度(Texture Strength):被點擊位置的紋理強度。可以修改以選擇其他強度範圍。
- 紋理範圍(Texture Range):僅在以視覺化或產生起始點的主導紋理強度為中心的一定紋理強度範圍內產生。此功能不適用於網格。


注意:您可以更改紋理強度和範圍來獲得一些非常精細的效果。
遮罩檢查(Check Mask):使用遮罩來確定生成器在何處產生其原型。

基於雜訊的遮罩在世界座標層級上將雜訊疊加在生成器上,以確定原型可以產生的位置。


基於影像的遮罩使用影像來確定要產生的原型的位置、比例和密度。
遮罩類型(Mask Type):要使用的遮罩類型。遮罩效果會體現在視覺化器中。
- Perlin, Billow, Ridged:在世界尺度上所應用的噪音遮罩。
- 影像(Image):在生成器尺度上套用的影像遮罩。
噪音遮罩(Noise Masks):
- 種子(Seed):唯一隨機種子。
- 倍頻(Octaves):雜訊中的細節量- 倍頻數越多,細節越豐富,計算時間也越長。
- 頻率(Frequency):第一倍頻的頻率。較小的值會創建更大的噪音圖案。
- 持久度(Persistence):噪音的粗糙度。控制連續倍頻的振幅衰減速度。
- 間隙度(Lacunarity):連續倍頻之間的頻率乘數。
- 中點(Mid-Point):被視為噪音函數中點的噪音曲線部分。
- 範圍(Range):用於選擇產生雜訊的、圍繞中點的範圍。
影像遮罩(Image Masks):
- 影像遮罩(Image Mask):用作遮罩的彩色影像。遮罩將被縮放到生成器的範圍。影像的主色可以分配對應的原型,如果影像存在 Alpha 通道,它可用於控制生成的大小和密度。
- 您將在"生成原型"部分中針對此圖像選擇原型(請參閱該部分中相關的圖像遮罩說明)。
產生原型面板
此部分用於定義原型以及控制它們如何產生到場景中的設定。
一個原型由一個或多個可以產生到場景中的實體資源組成——例如地形草/細節、地形樹木,以及遊戲物件/預製體。

每個原型在"生成原型"面板中都會有一個對應的條目。
它們透過以下方式標識:
- [複選框] – 如果被勾選,則原型處於活動狀態,可以被產生。
- 名稱– 原型名稱,預製體將作為子級父化在此名稱下。
- (Tx/G/T/P) – 地形紋理、地形草、地形樹木、§ 預製體。
- C – 適應地形法線(僅適用於預製體)。
- % – 如果被選中,其被產生的機率百分比。
- [0] – 已產生的實例數量。
若要查看原型的配置詳情,請點選三角形展開詳情標籤。詳情內容會根據原型類型以及是否透過影像遮罩應用而有所不同。
進階視圖

點擊"進階視圖"按鈕將顯示關於原型配置方式的更多詳細資訊。
靜態/動態視圖

在靜態和動態視圖模式之間切換。
- 靜態視圖不適合編輯,其設定是由預製體/遊戲物件樹上的子物件在生成吸收過程中自動設定的。
- 動態視圖設計為可編輯的,通常位於原型樹的根部。如果您想要自訂其內部設置,可以將靜態視圖切換到動態視圖。
生成條件覆蓋
在進階檢視中,您可以選擇覆寫每個單獨資源的生成條件。這對於複雜的結構非常有用。

成功率(%)
當一次生成迭代發生時,GeNa 會在地形上選擇一個位置,評估其是否適合生成,然後進行成功率檢查。如果原型未能通過此檢查,則產生失敗。
若要變更不同資源之間產生的比例,請調整它們的成功率。

成功率以百分比形式顯示在原型標題中。

相對成功率會影響每個物件被產生的比例,如實例計數所示。

要啟用或停用不同的資源以考慮進行生成,只需點擊資源旁邊的複選框。非活動資源將被排除在生成過程之外。
草地原型(Grass Prototypes)
草地原型用於描述地形細節以及生成器如何應用它們。

- 資源名稱(Resource Name):資訊性名稱。
- 成功率(Success):成功產生的機率百分比。 0 表示沒有機會,1 表示必定成功。
- 草地(Grass):一個下拉選單,它會讀取您的地形資料並允許您選擇一種草。您必須事先將這種草添加到地形中,才能在此處選擇它。請參閱:Unity 地形草地文件。
- 強度(Strength):要生成的地形草的最小和最大強度。這相當於您地形設定中草地繪製功能上的目標強度。
- 位置修正X (Position Modifier X):在 X 方向上相對於生成點的草地生成偏移量。
- 位置修正Z (Position Modifier Z):在 Z 方向上相對於生成點的草地生成偏移量。
- 基礎大小(Base Size):一個草實例的基本大小。這是一個資訊值,來自於該草被應用到地形時的方式。
樹木原型(Tree Prototypes)
樹木原型用於描述地形樹木以及生成器如何應用它們。樹木也可以作為預製體(Prefab) /遊戲物件(Game Object)生成。具體操作方法請參閱預製體(Prefab)部分。

- 資源名稱(Resource Name:資訊性名稱。
- 成功率(Success):成功產生的機率百分比。 0 表示沒有機會,1 表示必定成功。
- 樹木(Tree):一個下拉式選單,它會讀取您的地形資料並允許您選擇一種樹木。您必須事先將這種樹木添加到地形中,才能在此處選擇它。請參閱:Unity 地形樹木文件。
- 最小/最大修正值(Min & Max Modifier) (X, Y, Z):在生成時,一個在最小值和最大值之間的隨機偏移量會被添加到在放置條件(Placement Criteria)中為樹木選擇的旋轉值上。在某些情況下,您可能希望樹木擁有一個與生成器所應用的旋轉不同的偏移量,特別是在使用可拖曳旋轉(draggable rotation)進行複雜的興趣點(POI)生成時。
- 基礎大小(Base Size):一個樹木實例的基本大小。這是一個透過實例化一個樹木實例並計算其渲染器(Renderer)和碰撞器(Collider)的邊界(Bounds)來確定的資訊值。
- 基礎縮放(Base Scale):原始樹木實例的縮放比例。這是一個從樹木預製體(Prefab)中取得的資訊值。
預製體原型(Prefab Prototypes)
預製體原型用來描述預製體(Prefab)或預製體的集合(如建築、村莊等),以及生成器如何應用它們。
簡單視圖(非高級):

高階視圖(Advanced View):

- 前向旋轉(Forward Rotation):一項附加的旋轉,它將與放置條件(Placement Criteria)中的旋轉疊加,以確保當選擇了可拖動旋轉(draggable rotation)時,該原型總能指向箭頭方向。這使您能非常精確地控制物件生成時的朝向。
- 資源名稱(Resource Name):資訊性名稱。當此預製體(Prefab)產生到場景中時,將使用此名稱。
- 成功率(Success):成功產生的機率百分比。 0 表示沒有機會,1 表示必定成功。
- 預製體(Prefab):將被產生的預製體(Prefab)。這可以是任何預製體(Prefab)。注意:如果您希望此預製體(Prefab)產生或避免碰撞,它必須帶有碰撞器(Collider)。
- 吸附到地面(Snap To Ground):將預製體(Prefab)的位置吸附到地面上最近的點。
- 適應坡度(Conform Slope):使預製體(Prefab)順應其生成點所在坡度的法線(Normal)。
- 最小/最大位置偏移(Min / Max Position Offset):產生時,將會套用到此預製體(Prefab)上、相對於產生位置的偏移量。可以設定一個範圍,使得物件在每次生成時都能有不同的位置。
- 最小/最大旋轉偏移(Min / Max Rotation Offset):產生時,將應用到此預製體(Prefab)上、相對於放置條件(Placement Criteria)中指定旋轉值的偏移量。可以設定一個範圍,使得物件在每次生成時都能有不同的旋轉。
- 統一物件縮放(Uniform O Scale):為生成物件的縮放應用一個恆定的覆蓋值,或一個範圍值。生成物件的最終縮放將是放置條件(Placement Criteria)中的縮放比例與此處縮放比例的乘積。
- 最小/最大縮放(Min / Max Scale):為要產生的物件縮放套用一個隨機範圍。
- 統一碰撞體縮放(Uniform C Scale):當使用重力(Gravity)時,為生成物件上的碰撞體(Collider)縮放應用一個恆定的覆蓋值,或按維度單獨縮放。
- 碰撞體縮放(Collider Scale):在為重力(Gravity)產生物件時所應用的碰撞體(Collider)縮放比例。
- 靜態合批(Static Batching) / 光照貼圖(Lightmap) / 導航(Navigation) / 被遮罩(Occludee) / 遮罩(Occluder) / 離線連結(Offmesh Link) / 靜態反射探針(Static Ref Probe):產生時可套用的靜態屬性。這些設定僅能在編輯器模式(Editor Mode)下應用,在運行時產生(Runtime Spawning)期間無效。更多資訊請參閱:Unity 靜態物件手冊。
- 室外物件(Outdoor Object):將此物件標記為室外物件。當選擇了生成優化(Spawn Optimization)時,混合探針(Blend Probes)也會使用天空盒(Skybox)。室內物件則不使用天空盒(Skybox)。
- 強制優化(Force Optimise):如果在進階設定(Advanced Settings)中選擇了最佳化烘焙(Optimize Bake),此物件將使用最佳化流程。
- 可最佳化(Can Optimise):如果在進階設定(Advanced Settings)中選擇了最佳化烘焙(Optimize Bake),此物件將被考慮進行最佳化。
- 使用碰撞體邊界(Use Collider Bounds):舊功能。已不再使用。
- 基礎位置(Base Position):預製體(Prefab)實例的基準位置。這通常是該預製體(Prefab)根節點的原始位置。
- 基礎大小(Base Size):預製體(Prefab)實例的基本大小。這是一個透過實例化一個預製體(Prefab)實例並計算其渲染器(Renderer)和碰撞器(Collider)的邊界(Bounds)來確定的資訊值。
- 基礎縮放(Base Scale):預製體(Prefab)實例的原始縮放值。這是一個從原始預製體(Prefab)中取得的資訊值。
預製體原型集合(興趣點,POI)
當預製體(Prefab)以集合形式而非單體形式添加時,它們將作為集合被生成,並且在放置到環境中時會保持彼此間的相對佈局。
這是產生諸如農場、墓地等內容的便捷方式。您可以一次設計它們,然後隨意進行多次放置。

前向旋轉(Forward Rotation)設定允許您預先旋轉整個興趣點(POI),這樣當在高級設定(Advanced Settings)中設定了可拖曳旋轉(draggable rotation)時,前向箭頭總能產生正確的「前向」旋轉。這使得您可以非常精確地定位您的興趣點(POI)。
在上圖中,您可以看到此原型包含許多資源。您可以單獨更改每個資源的設定-更多詳細資訊請參閱前面的預製體原型(Prefab Prototypes)部分。
影像遮罩設定(Image Masking Settings)
當您選擇使用影像遮罩(Image Mask)時,您的原型(Prototype)上會顯示一個名為「遮罩設定(Mask Settings)」的新區域,可讓您將此原型(Prototype)關聯到遮罩上您希望其產生的顏色,並設定其餘與產生相關的設定。

一個方便的方法是使用顏色吸管(Colour Dropper),然後在預覽圖像上點擊您想要使用的顏色。

當您將每個新的原型(Prototype)關聯到遮罩時,它將會出現在視覺化器(Visualiser)中(您可能需要再次按下 Shift + 左鍵點擊來查看它)。
您可以啟動或停用單一資源,並在視覺化器(Visualiser)中查看其影響。
- 選擇顏色(Selection Colour):此原型(Prototype)將在其上產生的遮罩(Mask)顏色。多個原型(Prototype)可以關聯到同一種顏色。
- 選擇精度(Selection Accuracy):顏色選擇的精確度。通常您不應變更此值。
- 適配遮罩範圍(Fit Within Mask):當進行基於邊界框(Bounds)的產生時,這將確保被生成物件的整個體積都包含在遮罩(Mask)範圍內。例如,這對建築物很有效,但對於樹木則不然。這取決於您的具體用例。
- 反轉 Alpha 通道(Invert Alpha):反轉 Alpha 通道。當需要讓原型(Prototype)在同一張遮罩上互斥的位置產生時,這會很有用。
- 以Alpha 決定成功率(Success By Alpha):原型(Prototype)的成功率(Success Factor)將受 Alpha 通道值影響。其工作原理與原型(Prototype)的成功率(Success)控制相同。
- 按Alpha 決定縮放(Scale By Alpha):原型(Prototype)的縮放(Scale)將受 Alpha 通道值影響。其工作原理與原型(Prototype)的縮放(Scale)控制相同。
- 最小/最大縮放(Min / Max Scale): Alpha 值將被映射到的縮放範圍。Alpha 值為 0 時將對應最小縮放值,Alpha 值為 1 時將對應最大縮放值。
進階設定面板(Advanced Settings Panel)

此部分定義了生成器的進階設定。一些不常用的生成器設定位於此處。
- 目前處理器(Current Processor):
- 縮放取整(Scale Nearest Int):將強制您的物件基於最接近的整數進行縮放後產生。
- 全域生成抖動(%) (Global Spawn Jitter (%)):在全域產生起始點引入的隨機抖動量。
- 最大子產生器深度(Max Sub Spawner Depth):遞歸子產生器(Sub Spawner)產生呼叫的預設深度。
- 新增光照探針(Add Light Probes):當預製體(Prefab)成功產生時,這將在場景中加入光照探針(Light Probe)堆疊。一個光照探針(Light Probe)堆疊會在生成點上方 0.5 公尺處、預製體(Prefab)頂部上方 0.5 公尺處、以及再往上 5 公尺處各添加一個,以確保良好的光照覆蓋。GeNa 將確保光照探針組(Light Probe Groups)彼此之間至少相距"最小探針組距離(Min PG Dist)"米,並且單個光照探針(Light Probe)堆疊彼此之間至少相距"最小探針距離(Min Probe Dist)"米。
- 產生優化器(Spawn Optimizer):這將使生成器在生成過程中優化預製體(Prefab)的放置方式。優化器將優化所有符合其標準的資源。若要考慮進行最佳化,資源必須設定了"可最佳化(Can Optimize) "且其尺寸(縮放後)小於"小於(公尺) (Smaller Than (m))「的值。或者,如果設定了"強制最佳化(Force Optimize) ”,則它將始終被最佳化。更多資訊請參閱關於優化(Optimisation)的章節。
- 可視化器解析度(Visualiser Resolution):每次視覺化器(Visualiser)評估地形時要檢查的點的維度。值為 50 表示每次更新視覺化器(Visualiser)時將檢查 50 x 50 = 2500 個位置-值越大,所需時間越長。如果計算時間超過 200 毫秒,GeNa 會自動降低此值。這確保了無論運行電腦的效能如何,Unity 編輯器(Unity Editor)都能保持回應。
- 在運行時執行撤銷(Perform Undo at Runtime):啟用在運行時(Runtime)執行撤銷(Undo)操作的能力。
- 碰撞測試偏移(Collision Test Offset):碰撞偵測是基於您在螢幕上的點擊位置。此偏移量會被加到碰撞命中的位置,然後從新的高度發起一次新的碰撞檢查。這允許您檢測您的物件是否位於懸垂物下方。但有時,您的物件處於封閉空間內,因此將此值設小可以阻止您的碰撞檢查命中上方的懸垂物。
- 邊界框偏移(Bounds Offset):距離生成範圍的偏移量,用於偵測最近的碰撞物件。
- 啟用調試(Enable Debug):為生成器(Spawner)啟用調試模式。
新增資源面板(Add Resources Panel)
此部分允許向生成器新增資源。

- 新增草地(Add Grass):點選此項目以新增一個地形草地原型(Terrain Grass Prototype)。它預設總是選擇地形中的第一種草。請進入並編輯該原型(Prototype)以選擇正確的草。
- 新增樹木(Add Tree):點選此項目以新增一個地形樹木原型(Terrain Tree Prototype)。它預設總是選擇地形中的第一棵樹。請進入並編輯該原型(Prototype)以選擇正確的樹。
- 在此新增預製體或SpeedTree:將遊戲物件(Game Object)樹、預製體(Prefab)或SpeedTree拖放到此處以新增原型(Prototype)。
有許多方法可以將不同類型的結構攝取到您的生成器(Spawner)中。
裝飾器(Decorators)
生成器系統可以透過生成器裝飾器(Spawner Decorator)系統進行擴展。
裝飾器(Decorators)是您在將遊戲物件(Game Objects)或預製體(Prefabs)攝取產生器(Spawner)之前添加到其上的腳本(Scripts),它們會影響生成器的操作方式。
例如,一個地形裝飾器(Terrain Decorator)可以在建築物生成到場景中時,將其下方的地形壓平。裝飾器(Decorator)系統是可擴展的,因此您可以建立並添加自己自訂的生成行為。
如果您想查看使用裝飾器(Decorators)的更多範例,可以在下列資料夾中找到一些範例。請參閱內容包安裝與使用部分。
- PROCEDURAL WORLDS / CONTENT PACKS / FLOODED GROUNDS / CONTENT RESOURCES / LAYOUTS
- PROCEDURAL WORLDS / CONTENT PACKS / GAIA PRO / CONTENT RESOURCES / LAYOUTS

邊界裝飾器(Bounds Decorator)
允許碰撞偵測(Collision Detection)系統忽略某個對象,或對其採取不同的處理方式。

- 忽略邊界(Ignore Bounds):是否應讓邊界偵測(Bounds Detection)忽略此物件?
- 形狀類型(Shape Type):在球體(Sphere)、立方體(Box)、膠囊體(Capsule)、圓柱體(Cylinder)之間選擇。
- 半徑(Radius) (球體、膠囊體、圓柱體):形狀的半徑。
- 高度(Height) (膠囊體、圓柱體):形狀的高度。
- 中心(Center):邊界(Bounds)的中心點。
- 大小(Size):邊界(Bounds)的尺寸。
機率裝飾器(Chance Of Decorator)
影響遊戲物件(Game Object)或預製體(Prefab)的成功率(Success Rate)。

- 成功率(%) (Success (%)):物件產生的成功率(Success Rate)百分比。
Gaia 裝飾器(Gaia Decorator)
如果場景中存在 Gaia,則允許整合其功能。

- 啟用(Enabled):舊功能。始終設定為開啟。
- 取得海平面(Get Sea Level):如果啟用,生成器在生成時將始終從 Gaia 獲取最新的海平面(Sea Level)。
- 額外海平面高度(Extra Sea Level):讓您在 Gaia 的基礎海平面(Sea Level)上增加或減少高度。
物件圖層裝飾器(Object Layer Decorator)
允許您設定產生到場景中的物件的標籤(Tag) /層級遮罩(Layer Mask)。

- 標籤(Tag):設定遊戲物件(GameObject)的標籤(Tag)。
- 層級遮罩(Layer Mask):設定遊戲物件(GameObject)的層級(Layer)。
- 應用於子物件(Apply To Children):如果啟用,這將把標籤(Tag)和層級(Layer)應用於所有子遊戲物件(GameObjects)。
單一子項裝飾器(One Child Of Decorator)
此裝飾器(Decorator)將導致 GeNa 根據提供的比率隨機選擇並僅產生一個子物件或預製體(Prefab),而忽略其餘部分。

- 權重(Weights):選擇每個子變換(Transform)的權重百分比。
物理裝飾器(Physics Decorator)
允許您使此物件在生成時啟用物理(Physics)模擬。

- 迭代次數(Iterations):執行物理模擬(Physics Simulation)的幀迭代次數。
- 步長時間(Step Size):物理迭代(Physics Iteration)之間的時間延遲。
- 嵌入量(Y) (Embed Amount (Y)):物理模擬(Physics Simulation)後將物件嵌入(地面)的量。
- 最小位置(Y) (Min Location (Y)):物理物件(Physics Object)在退出模擬前可以移動的最小 Y 軸位置。
預製體解包裝飾器(Prefab Unpacker Decorator)
呼叫 Unity 的預製體工具(Prefab Utility)來解包物件樹中的預製體(Prefabs),以便 GeNa可以正確攝取其資料。
如果根物件的子物件中包含預製體解包裝飾器(Prefab Unpack Decorators),則根物件也需要一個預製體解包裝飾器(Prefab Unpack Decorator)。

生成條件裝飾器(Spawn Criteria Decorator)
覆蓋對像上的生成條件(Spawn Criteria)。

請參閱生成條件面板(Spawn Criteria Panel)以了解更多資訊。
生成標誌裝飾器(Spawn Flags Decorator)
覆蓋對像上的生成標誌(Spawn Flags)。

- 應用於子物件(Apply to Children):將所有配置的設定套用於子物件(遞歸)。
- 靜態合批(Static Batching):產生預製體(Prefab)時是否帶有靜態合批(Static Batching)標誌。
- 靜態光照貼圖(Static Lightmap):產生預製體(Prefab)時是否帶有靜態光照貼圖(Static Lightmap)標誌。
- 靜態導覽(Static Navigation):產生預製體(Prefab)時是否帶有靜態導覽(Static Navigation)標誌。
- 靜態被遮罩(Static Occludee):產生預製體(Prefab)時是否帶有靜態被遮罩(Static Occludee)標誌。
- 靜態遮罩(Static Occluder):產生預製體(Prefab)時是否有靜態遮罩(Static Occluder)標誌。
- 靜態反射探針(Static Ref Probe):產生預製體(Prefab)時是否帶有靜態反射探針(Static Reflection Probe)標誌。
- 室外對象(Outdoor Object):此為室外對象,混合探針(Blend Probes)在生成時也會使用天空盒(Skybox),否則將排除天空盒(Skybox)。
- 強制優化(Force Optimise):如果在進階設定(Advanced Settings)中選擇了最佳化烘焙(Optimize Bake),此預製體(Prefab)將被強制進行最佳化流程。
- 可最佳化(Can Optimise):如果在進階設定(Advanced Settings)中選擇了最佳化烘焙(Optimize Bake),此預製體(Prefab)將被考慮進行最佳化。
- 使用碰撞體邊界(Use Collider Bounds):如果啟用,將使用碰撞體(Collider)進行邊界檢查(Bounds Checking)。
子生成器裝飾器(Sub Spawner Decorator)
在此位置呼叫並產生另一個生成器(Spawner)。

- 子產生器(Sub Spawner):附加的子產生器(Sub Spawner)物件。
- 最大子生成器深度(Max Sub Spawner Depth):子產生器(Sub Spawner)的生成操作(Spawn Operation)將運作的深度。
地形裝飾器(Terrain Decorator)
在位置處呼叫地形(Terrain)操作。

- 啟用(Enabled):如果啟用,地形裝飾器(Terrain Decorator)將在產生遊戲物件(GameObject)時執行操作。
- 形狀紋理(Shape Textures):此區域包含所有要用於地形紋理(Textures)的紋理。
- 效果類型(Effect Type):
- 抬高(Raise):抬升地形(Terrain)。
- 降低(Lower):降低地形(Terrain)。
- 平整(Flatten):平整地形(Terrain)。
- 清除樹木(Clear Trees):移除地形樹木(Terrain Trees)。
- 清除細節(Clear Details):移除地形細節(Terrain Details)。
- 強度(Strength):執行操作所用紋理(Texture)的強度。
- 使用Alpha 通道(Use Alpha):如果啟用,將使用 Alpha 通道。
- 作用區域(Area Of Effect):紋理(Texture)在世界空間中的直徑。
地形樹木裝飾器(Terrain Tree Decorator)
將其附加到的預製體(Prefab)作為地形樹木(Terrain Tree)添加到地形(Terrain)中。

- 啟用(Enabled):如果啟用,遊戲物件(GameObject)將被加入到地形(Terrain)並作為地形樹木(Terrain Tree)產生。
變換裝飾器(Transform Decorator)
當此物件產生到場景中時,變更其位置(Position)、旋轉(Rotation)和縮放(Scale)。

- 吸附到地面(Snap To Ground):如果啟用,遊戲物件(GameObject)將會吸附在地面。
- 適應坡度(Conform Slope):如果啟用,遊戲物件(GameObject)將旋轉以對齊地面法線(Normal)。
- 位置修正(Y) (Position Modifier (Y)):Y 軸上的位置偏移(更多選項請參閱進階部分)。
- 旋轉修正(Y) (Rotation Modifier (Y)):Y 軸上的旋轉偏移(更多選項請參閱進階部分)。
- 統一物件縮放(Uniform O Scale):如果啟用,縮放將在 X, Y, Z 軸上統一。
- 縮放(Scale):應用於遊戲物件(GameObject)的縮放因子。
動畫器裝飾器(Animator Decorator)
增加產生時讓您的遊戲物件(GameObject)播放動畫(Animate)的能力(在編輯模式(Edit Mode)和運行模式(Play Mode)下均有效)。
將其附加到您的預製體(Prefab)的根物件上以啟用所有動畫。

- 更新子物件(Update Children):如果啟用,每個子物件也會執行動畫(Animations)。
粒子系統裝飾器(Particle Decorator)
增加生成時讓您的遊戲物件(GameObject)模擬粒子系統(Particles)的能力(在編輯模式(Edit Mode)和運行模式(Play Mode)下都有效)。
將其附加到您的預製體(Prefab)的根物件上以啟用所有粒子效果(Particle Effects)。

- 吸附到地面(Snap To Ground):如果啟用,每個子物件也會執行粒子模擬(Particle Simulations)。
建造器裝飾器(Builder Decorator)
在場景視圖(Scene View)中繪製視覺化(Visualisation),以輔助設計新的原型(Prototype)佈局。

材質裝飾器(Material Decorator)
讓您基於不同的預設(Presets)切換其他材質(Materials)。

- 材質資料(Material Data):材質資料(Material Data)保存了在遊戲物件(GameObject)產生後將使用的所有材質(Material)資訊。在其中,您可以設定材質預設(Material Presets),並在預設(Preset)中新增多個材質(Materials),並設定隨機選取其中一個使用的機率。
- 編輯(Edit):在專案視窗(Project Window)檢視中選擇並定位材質資料(Material Data)物件。
- 預設(Preset):允許您從材質資料(Material Data)中選擇一個預設(Preset)。如果選擇了"機率(Chance Of) ",它將根據機率隨機選取一個預設(Preset),然後從該預設(Preset)中選擇一個材質(Material)。
- 取得類型(Get Type):選擇取得材質(Material) ID 的方式。
- 名稱(Name):允許您建立一個材質(Material)可能包含的名稱列表,例如:Leaf, Leaves 等。名稱檢查是包含性匹配,因此只需部分名稱即可。
- ID (ID):從子物件中遊戲物件(GameObjects)上的網格渲染器(Mesh Renderer)的材質(Materials)中,透過一個整數來選擇一個 ID。
- 材質ID (Material ID):從子物件中遊戲物件(GameObjects)上的網格渲染器(Mesh Renderer)的材質(Materials)中,透過一個整數來選擇一個材質 ID (Material ID)。
Unity GeNa Pro 使用方法
此部分詳細介紹了 GeNa 的一些常見使用場景,並就如何獲得更好效果提供了一些建議。
注意:請確保將此腳本(Script)附加到您的原型(Prototype)的根物件(Root Object)上。

這有助於可視化您正在設計的原型各個部分周圍的邊界(Bounds),包括用於平整器(Flatteners)、子生成器(Sub Spawners)和碰撞(Collisions)的邊界。

建立一個GeNa 產生器(Create a GeNa Spawner)
步驟 1). 建立一個新的生成器(Create a new Spawner)
在層級視圖(Hierarchy)的空白處右鍵點擊,選擇 GeNa -> Add Spawner。
或者,選擇 Window -> Procedural Worlds -> GeNa Manager,然後按下 Create Spawner 按鈕。
GeNa > Add Spawner

步驟 2). 選擇或建立一個資源庫(Select or Create a Palette)

資源庫(Palettes)維護資源(Assets)的引用,用於序列化(Serialization)。
步驟 3). 增加一些原型(Add some Prototypes)
為了讓 GeNa 產生物體,您必須先指定您希望產生的物件類型。這被稱為生成「原型」 (Spawn 'Prototype')。

在此範例中,我們新增了4 種不同類型的原型(Prototypes)。
地形原型(Prototypes)是透過點擊 Add Tree、Grass、Tx 按鈕並在原型設定(Prototype Settings)中選擇對應的資源(Asset)來新增的;而預製體(Prefab)是透過拖放作業將其放到'Add Prefabs or SpeedTrees'框中來新增的。
- 地形樹木(Terrain Tree) - PW_Tree_Spruce_02 (T)
- 地形草地(Terrain Grass) – PW_Grass_Patch_02 (G)
- 地形紋理(Terrain Texture) – T_Ground_Sand_02_A_Sm (Tx)
- 預製體(Prefab) – fl_vil_GaiaHouse02B §
步驟 4). 準備生成:設定地面物件(To Spawn, we need to set our ground object)
透過 Shift + 左鍵點選環境中的一個物件來設定我們的地面物件。
在本例中,我們將在地形上產生。

當您按下並按住 Shift 鍵時,您將看到生成器視覺化器(Spawner Visualizer)。
它根據我們的生成條件(Spawn Criteria)告訴我們可以在哪裡產生原型(Prototype)。
您可以在生成器(Spawner)中修改您的生成條件(Spawn Criteria)來調整此範圍。
有關此內容的更多信息,請參閱本手冊中生成條件設定(Spawn Criteria settings)部分。

步驟 5). 生成! (Spawn!)
確保您的生成器(Spawner)在層級視圖(Hierarchy)中被選中,然後按下 Ctrl + 左鍵點擊來產生!

生成地形細節(草地)(Spawning Terrain Details (Grass))
將草地(Grass)加入您的地形(Terrain)。

加入一個生成器(Spawner),並將您的草種加入到該生成器(Spawner)中。

檢查每個原型(Prototype),確保選擇了正確的草種。

像往常一樣進行生成。
提示(TIP):雜訊產生器(Noise Generator)在世界空間中產生雜訊(Noise) ,這表示多個生成器(Spawners)可以使用它,並預期它會產生相同的遮罩(Mask)。
嘗試設定兩個具有相同噪音設定(Noise Settings)的生成器(Spawners),並在其中一個上選擇反轉遮罩(Invert Mask)。
這將反轉生成的圖案,您可以用它來在一片區域生成一種草,而在反轉的區域生成另一種草。
這樣做產生的整體效果是一片漂亮的草地,其有趣之處在於您還會得到交錯分佈的、漂亮的草塊。此技巧適用於所有類型的生成。
生成地形樹木(Spawning Terrain Trees)
將您的樹木(Trees)加入地形(Terrain)。

添加一個生成器(Spawner),並將您的樹木添加到該生成器(Spawner)中。

檢查每個原型(Prototype),確保選擇了正確的樹種。

像往常一樣進行生成。
提示(TIP):雜訊產生器(Noise Generator)在世界空間中產生雜訊(Noise) ,這表示多個生成器(Spawners)可以使用它,並預期它會產生相同的遮罩(Mask)。
嘗試設定兩個具有相同噪音設定(Noise Settings)的生成器(Spawners),並在其中一個上選擇反轉遮罩(Invert Mask)。
這將反轉生成的圖案,您可以用它來在一片區域生成一種樹,而在反轉的區域生成另一種樹。
這樣做產生的整體效果是一個植被分佈豐富的地形,其有趣之處在於您還會得到交錯分佈的、漂亮的樹林斑塊。此技巧適用於所有類型的生成。
Unity GeNa Pro 關卡設計神器相關介紹 & 教學影片
GeNa Pro Quickstart Guide
GeNa Pro - Rivers
GeNa Pro - Roads
Unity GeNa Pro 關卡設計神器相關網站 & 插件載點
【GeNa Pro】
GeNa Pro 官方網站:GeNa Pro
Asset Store 下載連結:GeNa Pro
————————————————
更多好用插件:【Unity 好用插件推薦】持續更新,一遊戲開發事半功倍!
本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。
特約作家簡介
支持贊助 / DONATE
亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。
BTC |
![]() |
bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj |
|
ETH |
![]() |
0xB2231557bc418201922DD7C2673ec97E67E35F83 |
|
TRON |
![]() |
TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp |








