目錄
- 一、界面參數介紹
- 1.主模塊
- 2.Emission 模塊
- 3.Shape 模塊
- 4.Velocity over Lifetime 模塊
- 5.Noise 模塊
- 6.Limit Velocity Over Lifetime 模塊
- 7.Inherit Velocity 模塊
- 8.Force Over Lifetime 模塊
- 9.Color Over Lifetime 模塊
- 10.Color By Speed 模塊
- 11.Size over Lifetime 模塊
- 12、Size by Speed 模塊
- 13.Rotation Over Lifetime 模塊
- 14.Rotation By Speed 模塊
- 15.External Forces 模塊
- 16.Collision 模塊
- 16.1.Planes模式
- 16.2.World模式
- 17.Triggers 模塊
- 18.Sub Emitters 模塊
- 19.Texture Sheet Animation 模塊
- 19.1.Grid 模式屬性
- 19.2.Sprite 模式屬性
- 20.Lights 模塊
- 21.Trails 模塊
- 22.Renderer 模塊
- 二、常用參數和方法解析(待更新)
一、界面參數介紹
1.主模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Duration | 系統運行的時間長度 | - |
Looping | 如果啟用此屬性,系統將在其持續時間結束時再次啟動并繼續重復該循環 | - |
Prewarm | 如果啟用此屬性,系統將初始化,就像已經完成一個完整周期一樣(僅當Looping 也啟用時才有效) | - |
Start Delay | 啟用此屬性后,系統開始發射前將延遲一段時間(以秒為單位) | - |
Start Lifetime | 粒子的初始生命周期 | - |
Start Speed | 每個粒子在適當方向的初始速度 | - |
3D Start Size | 如果要分別控制每個軸的大小,請啟用此屬性 | - |
Start Size | 每個粒子的初始大小 | - |
3D Start Rotation | 如果要分別控制每個軸的旋轉,請啟用此屬性 | - |
Start Rotation | 每個粒子的初始旋轉角度 | - |
Flip Rotation | 使一些粒子以相反的方向旋轉 | - |
Start Color | 每個粒子的初始顏色 | - |
Gravity Modifier | 縮放Physics 窗口中設置的重力值。值為零會關閉重力 | - |
Simulation Space | 控制粒子的運動位置是在父對象的局部空間中(因此與父對象一起移動)、在世界空間中還是相對于自定義對象(與您選擇的自定義對象一起移動) | - |
Simulation Speed | 調整整個系統更新的速度 | - |
Delta Time | 在Scaled 和Unscaled 之間進行選擇,其中的Scaled 使用Time 窗口中的Time Scale 值,而Unscaled 將忽略該值。此屬性對于出現在暫停菜單 (Pause Menu ) 上的粒子系統非常有用 |
|
Scaling Mode | 選擇如何使用變換中的縮放。設置為Hierarchy 、Local 或Shape 。Local 僅應用粒子系統變換縮放,忽略任何父級。Shape 模式將縮放應用于粒子起始位置,但不影響粒子大小 |
|
Play on Awake | 如果啟用此屬性,則粒子系統會在創建對象時自動啟動 | - |
Emitter Velocity | 選擇粒子系統如何計算Inherit Velocity 和Emission 模塊使用的速度。系統可使用剛體組件(如果存在)或通過跟蹤變換組件的移動情況來計算速度 | - |
Max Particles | 系統中同時允許的最多粒子數。如果達到限制,則移除一些粒子 | - |
Auto Random Seed | 如果啟用此屬性,則每次播放時粒子系統看起來都會不同。設置為false 時,每次播放時系統都完全相同 | - |
Random Seed | 禁用自動隨機種子時,此值用于創建唯一的可重復效果 | - |
Stop Action | 當屬于系統的所有粒子都已完成時,可使系統執行某種操作。當一個系統的所有粒子都已死亡,并且系統存活時間已超過Duration 設定的值時,判定該系統已停止。對于循環系統,只有在通過腳本停止系統時才會發生這種情況 |
|
Culling Mode | 選擇粒子在屏幕外時是否暫停粒子系統模擬。在屏幕外時進行剔除具有最高效率,但您可能希望繼續進行非一次性 (off-one) 效果的模擬 |
|
Ring Buffer Mode | - |
|
2.Emission 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Rate over Time | 每個時間單位發射的粒子數。 | - |
Rate over Distance | 每個移動距離單位發射的粒子數。 | - |
Bursts | 爆發是指生成粒子的事件。通過這些設置可允許在指定時間發射粒子。 |
|
3.Shape 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Shape | 發射體積的形狀 | |
| ||
Radius | 形狀的圓形半徑 | 數值,定義圓形、錐體、環形等形狀的半徑大小 |
Radius Thickness | 發射粒子的體積比例 | 值為 0 表示從形狀的外表面發射粒子; 值為 1 表示從整個體積發射粒子; 介于兩者之間的值將使用體積的一定比例 |
Texture | 用于為粒子著色和丟棄粒子的紋理 | - |
Clip Channel | 紋理中用于丟棄粒子的通道 | - |
Clip Threshold | 將粒子映射到紋理上的位置時,丟棄像素顏色低于此閾值的所有粒子 | - |
Color affects Particles | 粒子顏色受紋理顏色影響 | - |
Alpha affects Particles | 粒子 Alpha 受紋理 Alpha 影響 | - |
Bilinear Filtering | 在讀取紋理時,無論紋理尺寸如何,均組合 4 個相鄰樣本以獲得更平滑的粒子顏色變化 | - |
Position | 將一個偏移應用于生成粒子的發射器形狀 | - |
Rotation | 旋轉生成粒子的發射器形狀 | - |
Scale | 更改生成粒子的發射器形狀的大小 | - |
Align to Direction | 根據粒子的初始行進方向定向粒子 | - |
Randomize Direction | 將粒子方向朝隨機方向混合 | 設置為 0 時,此設置不起作用; 設置為 1 時,粒子方向完全隨機 |
Spherize Direction | 將粒子方向朝球面方向混合,從它們的變換中心向外行進 | 設置為 0 時,此設置不起作用; 設置為 1 時,粒子方向從中心向外(與 Shape 設置為 Sphere 時的行為相同) |
Randomize Position | 以隨機量移動粒子,直至達到指定值 | 此屬性設置為 0 時,此設置不起作用; 任何其他值都會對粒子的生成位置應用一些隨機性 |
Angle | 錐體在其頂點處的角度 | 角度為 0 時產生圓柱體, 角度為 90 度時產生圓盤 |
Arc | 形成發射器形狀的整圓的角部 | - |
Mode | 定義 Unity 如何在形狀的弧形或半徑周圍生成粒子 |
|
Spread | 弧形或半徑周圍可產生粒子的離散間隔 | 例如,值為 0 表示允許在弧形或半徑周圍的任何位置生成粒子,值為 0.1 表示僅在形狀周圍或半徑上以 10% 的間隔生成粒子 |
Speed | 發射位置圍繞弧形或半徑移動的速度 | 使用值字段旁邊的小黑色下拉菜單將此屬性設置為Constant 可使值始終保持不變,設置為Curve 可使值隨時間變化。僅當Mode 設置為Random 以外的其他設置時,此選項才可用 |
Length | 錐體的長度 | 僅當Emit from: 屬性設置為Volume 時,此選項才適用 |
Emit from: | 錐體或盒體發射粒子的部分 |
|
Type | 指定從何處發射粒子(針對Mesh 、Sprite 相關模式) |
|
Single Material | 指定是否從特定子網格(由材質索引號標識)發射粒子 | 啟用此屬性后會顯示數字字段,可指定材質索引號 |
Use Mesh Colors | 使用網格頂點顏色調整粒子顏色,或者,如果頂點顏色不存在,則使用材質中的著色器顏色屬性“Color“或”TintColor” | - |
Normal Offset | 在距離網格或精靈表面多遠處發射粒子(在表面法線的方向上) | - |
UV Channel | 選擇將源網格上的哪個 UV 通道用于對紋理進行采樣 | - |
4.Velocity over Lifetime 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Linear X, Y, Z | 粒子在X、Y和Z軸上的線性速度 | - |
Space | 指定Linear X, Y, Z 軸是參照本地空間還是世界空間 | 本地空間:粒子速度參照粒子系統的父對象坐標系 世界空間:粒子速度參照整個游戲世界的坐標系 |
Orbital X, Y, Z | 粒子圍繞X、Y和Z軸的軌道速度 | - |
Offset X, Y, Z | 軌道中心的位置,適用于軌道運行粒子 | - |
Radial | 粒子遠離/朝向中心位置的徑向速度 | - |
Speed Modifier | 在當前行進方向上/周圍向粒子的速度應用一個乘數 | 數值,例如0.5表示將粒子速度乘以0.5,使速度減半;2表示速度加倍等 |
5.Noise 模塊
屬性 | 功能 |
---|---|
Separate Axes | 在每個軸上獨立控制強度和重新映射。 |
Strength | 通過一條曲線定義噪聲在粒子的生命周期內對粒子的影響有多強。值越高,粒子移動越快和越遠。 |
Frequency | 低值會產生柔和、平滑的噪聲,而高值會產生快速變化的噪聲。此屬性可控制粒子改變行進方向的頻率以及方向變化的突然程度。 |
Scroll Speed | 隨著時間的推移而移動噪聲場可產生更不可預測和不穩定的粒子移動。 |
Damping | 啟用此屬性后,強度與頻率成正比。將這些值綁在一起意味著可在保持相同行為但具有不同大小的同時縮放噪聲場。 |
Octaves | 指定組合多少層重疊噪聲來產生最終噪聲值。使用更多層可提供更豐富、更有趣的噪聲,但會顯著增加性能成本。 |
Octave Multiplier | 對于每個附加的噪聲層,按此比例降低強度。 |
Octave Scale | 對于每個附加的噪聲層,按此乘數調整頻率。 |
Quality | 較低的質量設置可顯著降低性能成本,但也會影響噪聲的有趣程度。請使用能為您提供所需行為的最低質量以獲得最佳性能。 |
Remap | 將最終噪聲值重新映射到不同的范圍。 |
Remap Curve | 描述最終噪聲值如何變換的曲線。例如,可使用此選項來創建從高點開始并以零結束的曲線,從而選擇噪聲場的較低范圍并忽略較高范圍。 |
Position Amount | 用于控制噪聲對粒子位置影響程度的乘數。 |
Rotation Amount | 用于控制噪聲對粒子旋轉(以度/秒為單位)影響程度的乘數。 |
Size Amount | 用于控制噪聲對粒子大小影響程度的乘數。 |
6.Limit Velocity Over Lifetime 模塊
屬性 | 功能 |
---|---|
Separate Axes | 將軸拆分為單獨的 X、Y 和 Z 分量。 |
Speed | 設置粒子的速度限制。 |
Space | 選擇速度限制是適用局部空間還是世界空間。僅當啟用了 Separate Axes 時,此選項才可用。 |
Dampen | 當粒子速度超過速度限制時,粒子速度降低的比例。 |
Drag | 對粒子速度施加線性阻力。 |
Multiply by Size | 啟用此屬性后,較大的粒子會更大程度上受到阻力系數的影響。 |
Multiply by Velocity | 啟用此屬性后,較快的粒子會更大程度上受到阻力系數的影響。 |
7.Inherit Velocity 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Mode | 指定如何將發射器速度應用于粒子 | Current 發射器的當前速度將應用于每一幀上的所有粒子。例如,如果發射器減速,所有粒子也將減速。Initial 每個粒子出生時將施加一次發射器的速度。粒子出生后對發射器速度的任何改變都不會影響該粒子。 |
Multiplier | 粒子應該繼承的發射器速度的比例。 |
8.Force Over Lifetime 模塊
屬性 | 功能 |
---|---|
X, Y, Z | 在 X、Y 和 Z 軸上施加到每個粒子的力。 |
Space | 選擇是在局部空間還是在世界空間中施力。 |
Randomize | 使用 Two Constants 或 Two Curves 模式時,此屬性會導致在每個幀上在定義的范圍內選擇新的作用力方向。因此會產生更動蕩、更不穩定的運動。 |
9.Color Over Lifetime 模塊
屬性 | 功能 |
---|---|
Color | 粒子在其生命周期內的顏色漸變。漸變條的左側點表示粒子壽命的開始,而漸變條的右側表示粒子壽命的結束。例如,粒子可能從橙色開始,隨著時間的推移逐漸變淡,并在其壽命結束時不可見。 |
10.Color By Speed 模塊
屬性 | 功能 |
---|---|
Color | 在速度范圍內定義的粒子的顏色漸變。 |
Speed Range | 顏色漸變映射到的速度范圍的下限和上限(超出范圍的速度將映射到漸變的端點)。 |
11.Size over Lifetime 模塊
屬性 | 功能 |
---|---|
Separate Axes | 在每個軸上獨立控制粒子大小。 |
Size | 通過一條曲線定義粒子的大小在其生命周期內如何變化。 |
12、Size by Speed 模塊
屬性 | 功能 |
---|---|
Separate Axes | 在每個軸上獨立控制粒子大小。 |
Size | 通過曲線定義粒子在速度范圍內的大小。 |
Speed Range | 大小曲線映射到的速度范圍的下限和上限(超出范圍的速度將映射到曲線的端點)。 |
13.Rotation Over Lifetime 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Separate Axes | 允許根據每個軸指定旋轉。啟用此選項后,即可為 X、Y 和 Z 軸中的每個軸設置旋轉。 | - |
Angular Velocity | 旋轉速度(以度/秒為單位)。請參閱下文以了解更多信息。 |
|
14.Rotation By Speed 模塊
屬性 | 功能 |
---|---|
Separate Axes | 為每個旋轉軸獨立控制旋轉。 |
Angular Velocity | 旋轉速度(以度/秒為單位)。 |
Speed Range | 大小曲線映射到的速度范圍的下限和上限(超出范圍的速度將映射到曲線的端點)。 |
15.External Forces 模塊
屬性 | 功能 |
---|---|
Multiplier | 應用于風區外力的比例值。 |
Influence Filter | 選擇是否基于__層遮罩 (Layer Mask)__ 或通過顯式__列表 (List)__ 包含力場。 |
List | 定義可影響此粒子系統的力場的顯式列表。當 Influence Filter 設置為 List 時,將顯示此屬性。 |
Influence Mask | 使用層遮罩來確定哪些力場影響此粒子系統。當 Influence Filter 設置為 Layer Mask 時,將顯示此屬性。 |
16.Collision 模塊
16.1.Planes模式
屬性 | 功能 |
---|---|
Planes 彈出菜單 | 選擇 Planes 模式。 |
Planes | 用于定義碰撞平面的變換的可擴展列表。 |
Visualization | 選擇要將 Scene 視圖中的碰撞平面輔助圖標顯示為線框網格還是實體平面。 |
Scale Plane | 用于可視化的平面大小。 |
Dampen | 粒子碰撞后損失的速度比例。 |
Bounce | 粒子碰撞后從表面反彈的速度比例。 |
Lifetime Loss | 粒子碰撞后損失的總生命周期比例。 |
Min Kill Speed | 碰撞后運動速度低于此速度的粒子將從系統中予以移除。 |
Max Kill Speed | 碰撞后運動速度高于此速度的粒子將從系統中予以移除。 |
Radius Scale | 允許調整粒子碰撞球體的半徑,使其更貼近粒子圖形的可視邊緣。 |
Send Collision Messages | 如果啟用此屬性,則可從腳本中通過 OnParticleCollision 函數檢測粒子碰撞。 |
Visualize Bounds | 在 Scene 視圖中將每個粒子的碰撞邊界渲染為線框形狀。 |
16.2.World模式
屬性 | 功能 | 可選值及說明 |
---|---|---|
World 彈出菜單 | 選擇World 模式 | / |
Collision Mode | 設置碰撞模式為3D或2D | 3D、2D |
Dampen | 粒子碰撞后損失的速度比例 | / |
Bounce | 粒子碰撞后從表面反彈的速度比例 | / |
Lifetime Loss | 粒子碰撞后損失的總生命周期比例 | / |
Min Kill Speed | 碰撞后運動速度低于此速度的粒子將從系統中予以移除 | / |
Max Kill Speed | 碰撞后運動速度高于此速度的粒子將從系統中予以移除 | / |
Radius Scale | 2D或3D的設置 | / |
Collision Quality | 使用下拉選單來設置粒子碰撞的質量,影響有多少粒子可以穿過碰撞體以及計算資源的消耗 |
|
Collides With | 粒子只會與所選層上的對象發生碰撞 | / |
Max Collision Shapes | 粒子碰撞可包括的碰撞形狀個數,多余的形狀將被忽略,且地形優先 | / |
Enable Dynamic Colliders | 勾選此選項可將動態碰撞體包括在粒子響應碰撞的對象集中,否則粒子僅響應靜態碰撞體的碰撞 | True 、False |
Voxel Size | 使用Medium 或Low 質量碰撞時,Unity會在網格結構中緩存碰撞,此設置控制著網格大小 | / |
Collider Force | 在粒子碰撞后對物理碰撞體施力 | / |
Multiply by Collision Angle | 向碰撞體施力時,根據粒子與碰撞體之間的碰撞角度來縮放力的強度 | / |
Multiply by Particle Speed | 向碰撞體施力時,根據粒子的速度來縮放力的強度 | / |
Multiply by Particle Size | 向碰撞體施力時,根據粒子的大小來縮放力的強度 | / |
Send Collision Messages | 如果選中此復選框,則允許從腳本中通過OnParticleCollision 函數檢測粒子碰撞 | True 、False |
Visualize Bounds | 在Scene 視圖中預覽每個粒子的碰撞球體 | / |
17.Triggers 模塊
屬性 | 描述 | 可選值及說明 |
---|---|---|
Inside | 指定粒子系統在粒子位于碰撞體內的每一幀對粒子采取的操作 |
|
Outside | 指定粒子系統在粒子位于碰撞體外的每一幀對粒子采取的操作 |
|
Enter | 指定粒子系統在粒子進入碰撞體的幀對粒子采取的操作 |
|
Exit | 指定粒子系統在粒子退出碰撞體的幀對粒子采取的操作 |
|
Collider Query Mode | 指定此粒子系統用于獲取有關與粒子交互的碰撞體的信息的方法。這增加了處理觸發器模塊所需的資源,因此,如果不需要任何額外的碰撞信息,請將此屬性設置為 Disabled |
|
Radius Scale | 粒子的碰撞體邊界。允許您更緊密地將粒子的碰撞體邊界匹配到粒子的視覺外觀。如果粒子為圓形且其紋理具有淡入淡出效果,這將很有用,因為默認粒子碰撞體將在粒子達到視覺效果之前位于觸發器內。請注意,當事件實際觸發時,此設置不會更改,但是可以延遲或提前達到觸發器的視覺效果 | 輸入 |
Visualize Bounds | 指示是否在 Scene 視圖中顯示每個粒子的碰撞體邊界。啟用此屬性可顯示碰撞體邊界,而禁用則可隱藏碰撞體邊界 |
|
18.Sub Emitters 模塊
屬性 | 描述 |
---|---|
Sub Emitters | 配置一個子發射器列表,并選擇它們的觸發條件以及它們從父粒子繼承的屬性。 |
要觸發子發射器,可使用以下條件:
Birth:粒子的創建時間。
Collision:粒子與對象發生碰撞的時間。
Death:粒子的銷毀時間。
Trigger:粒子與觸發碰撞體相互作用的時間。
Manual:僅在通過腳本進行請求時觸發。請參閱 ParticleSystem.TriggerSubEmitter。
19.Texture Sheet Animation 模塊
19.1.Grid 模式屬性
屬性 | 功能 | 可選值及說明 |
---|---|---|
Mode 彈出菜單 | 選擇Grid 模式 | 無 |
Tiles | 紋理在X(水平)和Y(垂直)方向上劃分的區塊數量 | 無 |
Animation | Animation 模式可設置為Whole Sheet 或Single Row (即精靈圖集的每一行代表一個單獨的動畫序列) |
|
Time Mode | 選擇粒子系統如何在動畫中對幀進行采樣 |
|
Row Mode | 使粒子系統從紋理幀中選擇一行以生成動畫。僅當Animation 模式設置為Single Row 時,此屬性才可用 |
|
Random Row | 隨機從精靈圖集選擇一行以生成動畫。僅當Animation 模式設置為Single Row 時,此選項才可用 | 無 |
Row | 從精靈圖集選擇特定行以生成動畫。僅當選擇Single Row 模式且禁用Random Row 時,此選項才可用 | 無 |
Frame over Time | 通過一條曲線指定動畫幀隨著時間的推移如何增加 | 無 |
Start Frame | 允許指定粒子動畫應從哪個幀開始(對于在每個粒子上隨機定相動畫非常有用) | 無 |
Cycles | 動畫序列在粒子生命周期內重復的次數 | 無 |
Affected UV Channels | 允許具體指定粒子系統影響的 UV 流 | 無 |
19.2.Sprite 模式屬性
屬性 | 功能 |
---|---|
Mode 彈出菜單 | 選擇Sprites 模式 |
Frame over Time | 通過一條曲線指定動畫幀隨著時間的推移如何增加 |
Start Frame | 允許指定粒子動畫應從哪個幀開始(對于在每個粒子上隨機定相動畫非常有用) |
Cycles | 動畫序列在粒子生命周期內重復的次數 |
Enabled UV Channels | 允許具體指定粒子系統影響的UV流 |
20.Lights 模塊
屬性 | 功能 |
---|---|
Light | 分配一個光照預制件來描述粒子光照外觀。 |
Ratio | 一個介于 0 和 1 之間的值,表示將接受光照的粒子的比例。 |
Random Distribution | 選擇是隨機分配還是定期分配光照。設置為 true 時,每個粒子都有根據 Ratio 值隨機接受光照的機會。較高的值可增加粒子接受光照的概率。設置為 false 時,由 Ratio 控制新創建的粒子接受光照的頻率(例如,每第 N 個粒子將接受光照)。 |
Use Particle Color | 設置為 True 時,光照的最終顏色將通過其附加到的粒子的顏色進行調制。如果設置為 False,則使用光照顏色而不進行任何修改。 |
Size Affects Range | 啟用此屬性后,在光照中指定的__范圍 (Range)__ 將受到粒子大小的影響。 |
Alpha Affects Intensity | 啟用此屬性后,光照的__強度 (Intensity)__ 將受到粒子 Alpha 值的影響。 |
Range Multiplier | 使用此曲線在粒子的生命周期內將一個自定義乘數應用于光照范圍。 |
Intensity Multiplier | 使用此曲線在粒子的生命周期內將一個自定義乘數應用于光照強度。 |
Maximum Lights | 使用此設置可避免意外創建大量光照,大量光照可能會使 Editor 無響應或使應用程序運行速度非常慢。 |
21.Trails 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Mode | 選擇如何為粒子系統生成軌跡。 |
|
Ratio | 一個介于 0 和 1 之間的值,表示已分配軌跡的粒子的比例。Unity 隨機分配軌跡,因此該值表示概率。 | 取值范圍為 0 到 1 的數值 |
Lifetime | 軌跡中每個頂點的生命周期,表示為所屬粒子的生命周期的乘數。當每個新頂點添加到軌跡時,該頂點將在其存在時間超過其總生命周期后消失。 | 無 |
Minimum Vertex Distance | 定義粒子在其軌跡接收新頂點之前必須經過的距離。 | 無 |
World Space | 啟用此屬性后,即便使用 Local Simulation Space ,軌跡頂點也不會相對于粒子系統的游戲對象移動。相反,軌跡頂點將被置于世界空間中,并忽略粒子系統的任何移動。 |
|
Die With Particles | 如果選中此框,軌跡會在粒子死亡時立即消失。如果未選中此框,則剩余的軌跡將根據自身的剩余生命周期自然到期。 |
|
Ribbon Count | 選擇要在整個粒子系統中渲染的軌跡帶數量。值為 1 將創建連接每個粒子的單個軌跡帶。但是,大于 1 的值將創建連接每第 N 個粒子的軌跡帶。例如,使用值 2 時,將有一條軌跡帶連接粒子 1、3、5,另一條軌跡帶連接粒子 2、4、6,以此類推。粒子的排序取決于它們的存活時間。 | 正整數 |
Split Sub Emitter Ribbons | 在用作子發射器的系統上啟用此屬性時,從同一父系統粒子生成的粒子將共享一個軌跡帶。 |
|
Texture Mode | 選擇如何將紋理應用于粒子軌跡。 |
|
Size affects Width | 如果啟用此屬性(選中復選框),則軌跡寬度受粒子大小影響。 |
|
Size affects Lifetime | 如果啟用此屬性(選中復選框),則軌跡生命周期受粒子大小影響。 |
|
Inherit Particle Color | 如果啟用此屬性(選中復選框),則軌跡顏色由粒子顏色調制。 |
|
Color over Lifetime | 通過一條曲線控制整個軌跡在其附著粒子的整個生命周期內的顏色。 | 無 |
Width over Trail | 通過一條曲線控制軌跡沿其長度的寬度。 | 無 |
Color over Trail | 通過一條曲線控制軌跡沿其長度的顏色。 | 無 |
Generate Lighting Data | 通過啟用此屬性(選中復選框),可在構建軌跡幾何體時包含法線和切線。這樣允許它們使用具有場景光照的材質,例如通過標準著色器,或通過使用自定義著色器。 |
|
Shadow Bias | 文檔未明確說明該屬性具體功能,推測與軌跡陰影的偏移等相關 | 無 |
22.Renderer 模塊
屬性 | 功能 | 可選值及說明 |
---|---|---|
Render Mode | 如何從圖形圖像(或網格)生成渲染圖像 |
|
Normal Direction | 用于粒子圖形的光照法線的偏差 | 值為 1.0 表示法線指向攝像機,值為 0.0 表示法線指向屏幕中心(僅限公告牌模式) |
Material | 用于渲染粒子的材質 | / |
Trail Material | 用于渲染粒子軌跡的材質 | 僅當啟用了 Trails 模塊時可用 |
Sort Mode | 繪制粒子(因此覆蓋粒子)的順序 |
|
Sorting Fudge | 粒子系統排序的偏差 | 較低的值會增加粒子系統在其他透明游戲對象(包括其他粒子系統)上繪制的相對幾率,僅影響整個系統在場景中的顯示位置,不影響系統中單個粒子的排序 |
Min Particle Size | 最小粒子大小(無論其他設置如何),表示為視口大小的一個比例 | 僅當 Rendering Mode 設置為 Billboard 時應用 |
Max Particle Size | 最大粒子大小(無論其他設置如何),表示為視口大小的一個比例 | 僅當 Rendering Mode 設置為 Billboard 時應用 |
Render Alignment | 使用下拉選單選擇粒子公告牌面向的方向 |
|
Enable GPU Instancing | 控制是否要使用 GPU 實例化來渲染粒子系統 | 需要使用網格渲染模式并使用兼容的著色器 |
Flip | 在指定軸上鏡像一定比例的粒子 | 較高的值會翻轉更多的粒子 |
Allow Roll | 控制面向攝像機的粒子是否可以圍繞攝像機的 Z 軸旋轉 | 禁用此屬性對于 VR 應用特別有用,因為 HMD 滾動可能會給粒子系統帶來不良后果 |
Pivot | 修改旋轉粒子的中心軸心點 | 此值是粒子大小的乘數 |
Visualize Pivot | 在 Scene 視圖中預覽粒子軸心點 | / |
Masking | 設置粒子系統渲染的粒子在與精靈遮罩交互時的行為方式 | |
Apply Active Color Space | 在線性顏色空間中渲染時,系統會在將粒子顏色上傳到 GPU 之前從伽馬空間轉換粒子顏色 | / |
Custom Vertex Streams | 配置材質的頂點著色器中可用的粒子屬性 | 有關更多詳細信息,請參閱粒子頂點流 |
Cast Shadows | 如果啟用此屬性,陰影投射光源照在粒子系統上時將產生陰影 |
|
Shadow Bias | 沿著光照方向移動陰影以消除因使用公告牌來模擬體積而導致的陰影瑕疵 | / |
Receive Shadows | 決定陰影是否可投射到粒子上 | 只有不透明材質才能接受陰影 |
Sorting Layer | 渲染器排序圖層的名稱 | / |
Order in Layer | 此渲染器在排序圖層中的順序 | / |
Light Probes | 基于探針的光照插值模式 | / |
Reflection Probes | 如果啟用此屬性,并且場景中存在反射探針,則會為此游戲對象拾取反射紋理,并將此紋理設置為內置的著色器 uniform 變量 | / |
Anchor Override | 使用光照探針或反射探針系統時用變換來確定插值位置 | / |
二、常用參數和方法解析(待更新)
- 獲取組件與模塊:通過
GetComponent<ParticleSystem>()
獲取粒子系統組件,再通過main
、emission
等屬性獲取粒子系統的各個模塊。 - 常用參數設置:
mainModule.startSpeed
:設置粒子的起始速度。mainModule.startSize
:設置粒子的起始大小。mainModule.startColor
:設置粒子的起始顏色。mainModule.loop
:設置粒子系統是否循環播放。emissionModule.rateOverTime
:設置每秒發射的粒子數量。sizeOverLifetimeModule.size
:通過AnimationCurve
控制粒子大小隨時間的變化。
- 常用方法調用:
particleSys.Play()
:播放粒子系統。particleSys.Stop()
:停止粒子系統。particleSys.Clear()
:清除所有粒子。
示例代碼
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Events;namespace LumberDemo
{public class PatticleTool : MonoBehaviour{[Header("開啟粒子觸發進入事件")]public bool IsOpenEnter = false;[Header("開啟粒子觸發退出事件")]public bool IsOpenExit = false;[Header("開啟粒子位于碰撞體內時觸發事件")]public bool IsOpenInside = false;[Header("開啟粒子位于碰撞體外時觸發事件")]public bool IsOpenOutside = false;protected ParticleSystem particle;List<ParticleSystem.Particle> inside;List<ParticleSystem.Particle> enter;List<ParticleSystem.Particle> outside;List<ParticleSystem.Particle> exit;private UnityEvent<List<ParticleSystem.Particle>> _triggerInsideEvent;private UnityEvent<List<ParticleSystem.Particle>> _triggerEnterEvent;private UnityEvent<List<ParticleSystem.Particle>> _triggerOutsideEvent;private UnityEvent<List<ParticleSystem.Particle>> _triggerExitEvent;private UnityEvent<GameObject> _onCollisionEvent;private void Awake(){Init();}public UnityEvent<List<ParticleSystem.Particle>> OnTriggerInsideEvent{get{if (_triggerInsideEvent == null){_triggerInsideEvent = new UnityEvent<List<ParticleSystem.Particle>>();}return _triggerInsideEvent;}}public UnityEvent<List<ParticleSystem.Particle>> OnTriggerOutsideEvent{get{if (_triggerOutsideEvent == null){_triggerOutsideEvent = new UnityEvent<List<ParticleSystem.Particle>>();}return _triggerOutsideEvent;}}public UnityEvent<List<ParticleSystem.Particle>> OnTriggerEnterEvent{get{if (_triggerEnterEvent == null){_triggerEnterEvent = new UnityEvent<List<ParticleSystem.Particle>>();}return _triggerEnterEvent;}}public UnityEvent<List<ParticleSystem.Particle>> OnTriggerExitEvent{get{if (_triggerExitEvent == null){_triggerExitEvent = new UnityEvent<List<ParticleSystem.Particle>>();}return _triggerExitEvent;}}public UnityEvent<GameObject> OnCollisionEvent{get{if (_onCollisionEvent == null){_onCollisionEvent = new UnityEvent<GameObject>();}return _onCollisionEvent;}}/// <summary>/// 初始化/// </summary>private void Init(){particle = GetComponent<ParticleSystem>();if (!(IsOpenEnter || IsOpenExit || IsOpenInside || IsOpenOutside)){return;}if (IsOpenInside)inside = new List<ParticleSystem.Particle>();if (IsOpenEnter)enter = new List<ParticleSystem.Particle>();if (IsOpenExit)exit = new List<ParticleSystem.Particle>();if (IsOpenOutside)outside = new List<ParticleSystem.Particle>();}/// <summary>/// 添加粒子觸發體/// </summary>/// <param name="colliderTrs"></param>public void AddPatticleCollider(Transform colliderTrs){particle.trigger.AddCollider(colliderTrs);}int insideNum;int enterNum;int exitNum;int outsideNum;/// <summary>/// 設置粒子觸發/// </summary>protected virtual void OnParticleTrigger(){if (IsOpenInside){insideNum = particle.GetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside);if (insideNum > 0)OnInSideTrigger(inside);//將修改后的粒子重新分配回粒子系統particle.SetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside);}if (IsOpenEnter){enterNum = particle.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);if (enterNum > 0)OnEnterTrigger(inside);// 將修改后的粒子重新分配回粒子系統particle.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);}if (IsOpenExit){exitNum = particle.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);if (exitNum > 0)OnExitTrigger(inside);// 將修改后的粒子重新分配回粒子系統particle.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);}if (IsOpenOutside){outsideNum = particle.GetTriggerParticles(ParticleSystemTriggerEventType.Outside, outside);if (outsideNum > 0)OnOutsideTrigger(inside);// 將修改后的粒子重新分配回粒子系統particle.SetTriggerParticles(ParticleSystemTriggerEventType.Outside, outside);}}private void OnInSideTrigger(List<ParticleSystem.Particle> inside){if (IsOpenInside)OnTriggerInsideEvent?.Invoke(inside);}private void OnEnterTrigger(List<ParticleSystem.Particle> inside){if (IsOpenEnter)OnTriggerEnterEvent?.Invoke(inside);}private void OnExitTrigger(List<ParticleSystem.Particle> inside){if (IsOpenExit)OnTriggerExitEvent?.Invoke(inside);}private void OnOutsideTrigger(List<ParticleSystem.Particle> inside){if (IsOpenOutside)OnTriggerOutsideEvent?.Invoke(inside);}private void OnParticleCollision(GameObject other){OnCollisionEvent?.Invoke(other);}}
}