粒子系統的 Force over Lifetime

在此模組中指定的力量(如風或吸引力)讓粒子加速。

屬性 說明
X, Y, Z 在 X、Y 和 Z 軸上應用於每個粒子的力量。
Space 選擇力量是應用於局部空間(Local)還是世界空間(World)。
Randomize 當使用 Random Between Two ConstantsRandom Between Two Curves 模式時,系統會在每一幀內從定義的範圍中選擇新的力的方向讓粒子的運動變得更加混亂和不規則。

在流體(Fluids)的運動中,常常會受到外力的影響。例如,煙霧從火源上升時,會因為周圍的熱空氣而稍微加速。通過使用曲線來控制粒子在其生命周期中的力量,可以實現微妙的效果。以之前的例子為例,煙霧最初會向上加速,但隨著上升的空氣逐漸變涼,力量會減弱。火焰產生的濃煙可能會在最初加速,然後隨著擴散變慢,甚至如果持續很長時間,可能會開始向下落。

Reference:

粒子系統的 Inherit Velocity

使用這個模組在子發射器(subemitters)上。父系統中的每個粒子都可以在子發射器中產生粒子。此模組讀取來自父粒子的速度,並控制子發射器粒子的速度如何隨著時間對該速度作出反應。

屬性 說明
Mode 指定發射器速度如何應用於粒子。
Current :發射器(emitter)目前的速度將會在每一幀中應用到所有粒子。例如,目前的發射器速度減慢,則所有粒子也會跟著減慢。
Initial :發射器的速度會在每個粒子生成時應用一次。之後發射器速度的任何變化都不會影響已經生成的粒子。
Multiplier 設定粒子應繼承的發射器速度的比例。

這個模組適合從移動物體中發射粒子,例如從車輛產生的塵土,火箭的煙霧,蒸汽火車煙囪中的蒸汽,或任何需要粒子在初始階段以其來源物體的速度的百分比移動的情況。這個模組只在主模組中的 Simulation Space 設為 World 時才會對粒子產生影響。

也可以使用曲線讓效果隨時間變化。例如,你可以對新建立的粒子施加強的吸引力,隨時間減少。這對於蒸汽火車的煙霧會很有用,煙霧會隨時間慢慢漂移,停止並跟隨它所排放的火車。

Unity 以兩種方式計算發射器的速度,可以在主模組中的 Emitter Velocity 屬性設定要使用的計算方式:

  • 基於附加的 Rigidbody 組件的速度
  • 基於粒子系統的 Transform 組件在目前幀中移動的距離

粒子系統的 Noise module

Noise module 為粒子運動添加湍流(turbulence)效果。預設中不會啟用這個模組。

屬性 說明
Separate Axes 對粒子效果進行細緻的調整,以便在 X、Y 和 Z 軸上分別應用不同的強度和重映射值。
Strength 一條曲線(curve)來定義噪聲效果(noise effect)在粒子整個生命週期中的強度。越高的值會使粒子移動得更快、更遠。
Frequency 此屬性控制了粒子改變運動方向的頻率以及改變方向的劇烈程度,較低的值會產生柔和(soft)、平滑(smooth)的噪聲(noise),較高的值會產生快速變化的噪聲。
Scroll Speed 此屬性讓粒子隨著時間運動的更加不可預測和不規則。值越高粒子移動越不穩定。
Damping 啟用此屬性後,強度與頻率成正比。
Octaves 用於指定生成最終噪聲值的重疊噪聲層數。使用更多層會產生更豐富、更複雜的噪聲,但會顯著增加性能成本。
Octave Multiplier Octaves 啟用時才可用。對於每個額外的噪聲層(noise layer),將強度按此比例減少。
Octave Scale Octaves啟用時才可用。使用此屬性來調整每個額外的噪聲層的頻率。
Quality 較低的 Quality ,可以減少效能消耗,但是也會影響噪聲(noise)的視覺效果。
Remap 將最終的噪聲值重新映射到不同的範圍內。
Remap Curve Remap 啟用時才可用。此屬性為描述如何將最終噪聲值轉換為不同範圍的曲線。例如,可以使用此曲線來選擇噪聲場中的較低範圍並忽略較高範圍,透過建造一個從高開始並在零處結束的曲線來實現。
Position Amount 控制噪聲對粒子位置影響的倍數。
Rotation Amount 控制噪聲對粒子旋轉影響的倍數(以每秒度數為單位)。
Size Amount 控制噪聲對粒子大小影響的倍數。

可以用強烈的高頻噪聲來模擬火星的運動,而使用柔和的低頻噪聲則更適合模擬煙霧效果。
噪聲(Noise)演算法基於 Curl Noise,內部使用多個 Perlin Noise 樣本(Sample)來建立最終的噪聲場。

Reference:

粒子系統的 Velocity over Lifetime module

Velocity over Lifetime 模組讓你可以在粒子生命週期中控制粒子的速度。預設中不會啟用這個模組。

屬性 說明
Linear X, Y, Z 粒子在 X,Y 與 Z 軸(axe) 上直線運動速度(Linear velocity)
Space 指定線性 X、Y、Z 軸是指本地空間(Local)還是世界空間(World)。
Orbital X, Y, Z 粒子圍繞 X、Y 和 Z 軸的軌道速度(Orbital velocity)。
Offset X, Y, Z 繞軌粒子的軌道中心位置。
Radial 粒子朝向或遠離中心位置的徑向速度(Radial velocity)。
Speed Modifier 對粒子沿著/圍繞其當前移動方向的速度應用一個倍數。

要建立在特定方向上漂移的粒子,可以使用 Linear X, Y, Z 曲線(curve)模式。

要建立圍繞中心位置旋轉的粒子效果,請使用 Orbital X, Y, Z 。此外,可以使用 Radial 將粒子推向或遠離中心位置。通過使用 Offset X, Y, Z ,您可以為每個粒子定義自定義的旋轉中心。

您還可以使用此模組來調整粒子系統中粒子的速度,而不影響它們的方向,只需將上述所有值保持為零,僅修改 Speed Modifier 即可。

Reference:

粒子系統的 Shape

Shape Module 定義了粒子的體積(volume)或表面(surface)以及開始速度(velocity)的方向。
所有的形狀(除了網格(Mesh))都有定義關於它們尺寸的屬性,例如半徑(Radius)屬性,可以在 Sence 編輯器中編輯這些屬性,選擇的形狀會影響粒子發射的區域與發射粒子的初始方向。例如,

  • 球形(Sphere):會向所有方向發射粒子,
  • 錐形(Cone):使粒子從發射點向外擴散開來,形成一個擴散的粒子流。
  • 網格(Mesh):粒子會沿著網格表面上每個點的法線方向發射出去。

Sphere 與 Hemisphere

屬性 說明
Shape Sphere:向所有方向發射粒子
Hemisphere :在平面的一側均勻地向各個方向發射粒子。
Radius SphereHemisphere 形狀的半徑(radius)
Radius Thickness 發射粒子的體積比例。值為 0 時,粒子從形狀的外表面發射。值為 1 時,粒子從整個體積發射。介於這兩者之間的值將使用部分體積進行發射。
Arc 設定球體的弧度,若 Sphere 設為 360 的話,為一個球體,設為180則為半球體。
Mode : 定義 Unity 如何在形狀的弧線周圍生成粒子
Random :隨機產生粒子。
Loop :循環產生粒子,並在每個週期結束時回到起點。
Ping-Pong :與 Loop 模式相同,只是每個連續的循環會以與上次相反的方向進行。
Burst Spread :爆炸擴散模式會均勻地在形狀周圍分配粒子生成。與預設的隨機化行為相比,這種模式可以均勻地分佈粒子,避免粒子聚集在一起不均勻的情況。爆炸擴散模式最適合與爆炸發射一起使用。
Spread :弧線周圍可能產生粒子的離散間隔。例如,值為 0 時允許粒子在弧線周圍的任意位置生成,而值為 0.1 時則只允許粒子在形狀周圍的 10% 間隔處生成。
Texture 為粒子著色的紋理。
Position 對發射器形狀(emitter shape)應用一個偏移量。
Rotation 旋轉發射器形狀(emitter shape)。
Scale 改變發射器形狀(emitter shape)的大小。
Align to Direction 根據粒子初始移動方向來定向粒子。如果你想模擬例如在碰撞過程中從車身飛脫的漆塊,這會很有用。如果方向不滿意,你也可以在主模組中通過設置Start Rotation的值來覆蓋它。
Randomize Direction 將粒子的方向混合到隨機方向。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向完全隨機。
Spherize Direction 將粒子的方向混合到球形方向,即它們將從 Transform 的中心向外移動。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向指向中心外側(其行為與形狀設置為 Sphere 時相同)。
Randomize Position 將粒子隨機移動直到指定的值。當設置為 0 時,這個設置沒有影響。任何其他值都會在粒子的生成位置上添加一些隨機性。

Cone

屬性 說明
Shape Cone: 從錐體(Cone)的底部或主體發射粒子。粒子隨著它們距離錐體中心線由遠而近的發散。
Angle 錐體在其頂點的角度。角度為 0 時產生一個圓柱體,而角度為 90 時產生一個扁平的圓盤。
Radius Cone 形狀的半徑(radius)
Radius Thickness 發射粒子的體積比例。值為 0 時,粒子從形狀的外表面發射。值為 1 時,粒子從整個體積發射。介於這兩者之間的值將使用部分體積進行發射。
Arc 發射器形狀所形成的圓形的角度部分。
Mode : 定義 Unity 如何在形狀的弧線周圍生成粒子
Random :隨機產生粒子。
Loop :循環產生粒子,並在每個週期結束時回到起點。
Ping-Pong :與 Loop 模式相同,只是每個連續的循環會以與上次相反的方向進行。
Burst Spread :爆炸擴散模式會均勻地在形狀周圍分配粒子生成。與預設的隨機化行為相比,這種模式可以均勻地分佈粒子,避免粒子聚集在一起不均勻的情況。爆炸擴散模式最適合與爆炸發射一起使用。
Spread :弧線周圍可能產生粒子的離散間隔。例如,值為 0 時允許粒子在弧線周圍的任意位置生成,而值為 0.1 時則只允許粒子在形狀周圍的 10% 間隔處生成。
Length 設定錐體的長度。只在 Emit from 屬性設置為 Volume 時才可使用。
Emit from 從錐體的哪部分發射粒子,底部(Base)或體積(Volume)。
Texture 為粒子著色的紋理。
Position 對發射器形狀(emitter shape)應用一個偏移量。
Rotation 旋轉發射器形狀(emitter shape)。
Scale 改變發射器形狀(emitter shape)的大小。
Align to Direction 根據粒子初始移動方向來定向粒子。如果你想模擬例如在碰撞過程中從車身飛脫的漆塊,這會很有用。如果方向不滿意,你也可以在主模組中通過設置Start Rotation的值來覆蓋它。
Randomize Direction 將粒子的方向混合到隨機方向。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向完全隨機。
Spherize Direction 將粒子的方向混合到球形方向,即它們將從 Transform 的中心向外移動。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向指向中心外側(其行為與形狀設置為 Sphere 時相同)。
Randomize Position 將粒子隨機移動直到指定的值。當設置為 0 時,這個設置沒有影響。任何其他值都會在粒子的生成位置上添加一些隨機性。

Donut

屬性 說明
Shape Donut: 從圓環(torus)發射粒子。粒子從圓環的環狀部分向外移動。
Radius Donut 形狀的主要半徑(radius)
Donus Radius Donut 形狀外部厚度的半徑
Radius Thickness 發射粒子的體積比例。值為 0 時,粒子從形狀的外表面發射。值為 1 時,粒子從整個體積發射。介於這兩者之間的值將使用部分體積進行發射。
Arc 發射器形狀所形成的圓形的角度部分。
Mode : 定義 Unity 如何在形狀的弧線周圍生成粒子
Random :隨機產生粒子。
Loop :循環產生粒子,並在每個週期結束時回到起點。
Ping-Pong :與 Loop 模式相同,只是每個連續的循環會以與上次相反的方向進行。
Burst Spread :爆炸擴散模式會均勻地在形狀周圍分配粒子生成。與預設的隨機化行為相比,這種模式可以均勻地分佈粒子,避免粒子聚集在一起不均勻的情況。爆炸擴散模式最適合與爆炸發射一起使用。
Spread :弧線周圍可能產生粒子的離散間隔。例如,值為 0 時允許粒子在弧線周圍的任意位置生成,而值為 0.1 時則只允許粒子在形狀周圍的 10% 間隔處生成。
Length 設定錐體的長度。只在 Emit from 屬性設置為 Volume 時才可使用。
Emit from 從錐體的哪部分發射粒子,底部(Base)或體積(Volume)。
Texture 為粒子著色的紋理。
Position 對發射器形狀(emitter shape)應用一個偏移量。
Rotation 旋轉發射器形狀(emitter shape)。
Scale 改變發射器形狀(emitter shape)的大小。
Align to Direction 根據粒子初始移動方向來定向粒子。如果你想模擬例如在碰撞過程中從車身飛脫的漆塊,這會很有用。如果方向不滿意,你也可以在主模組中通過設置Start Rotation的值來覆蓋它。
Randomize Direction 將粒子的方向混合到隨機方向。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向完全隨機。
Spherize Direction 將粒子的方向混合到球形方向,即它們將從 Transform 的中心向外移動。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向指向中心外側(其行為與形狀設置為 Sphere 時相同)。
Randomize Position 將粒子隨機移動直到指定的值。當設置為 0 時,這個設置沒有影響。任何其他值都會在粒子的生成位置上添加一些隨機性。

Box

屬性 說明
Shape Box: 從盒子(Box)的邊緣(edge),表面(surface)或是盒體(body)發射粒子。粒子會向發射器物件的 Z 方向移動。
Emit from 從盒子(Box)的哪部分發射粒子,邊緣(Edge),外殼(Shell)或體積(Volume)。
Texture 為粒子著色的紋理。
Position 對發射器形狀(emitter shape)應用一個偏移量。
Rotation 旋轉發射器形狀(emitter shape)。
Scale 改變發射器形狀(emitter shape)的大小。
Align to Direction 根據粒子初始移動方向來定向粒子。如果你想模擬例如在碰撞過程中從車身飛脫的漆塊,這會很有用。如果方向不滿意,你也可以在主模組中通過設置Start Rotation的值來覆蓋它。
Randomize Direction 將粒子的方向混合到隨機方向。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向完全隨機。
Spherize Direction 將粒子的方向混合到球形方向,即它們將從 Transform 的中心向外移動。當設置為 0 時,這個設置沒有影響。當設置為 1 時,粒子的方向指向中心外側(其行為與形狀設置為 Sphere 時相同)。
Randomize Position 將粒子隨機移動直到指定的值。當設置為 0 時,這個設置沒有影響。任何其他值都會在粒子的生成位置上添加一些隨機性。

Mesh , MeshRenderer 與 SkinnedMeshRenderer

屬性 說明
Shape Mesh: 從盒子(Box)的邊緣(edge),表面(surface)或是盒體(body)發射粒子。粒子會向發射器物件的 Z 方向移動。

Reference:

粒子系統的 Emission Module

Emission Module 的屬性會影響粒子系統發射的速率和時間。在建立一個新的粒子系統 GameObject 時,預設會啟用這個模組。

屬性 說明
Rate over Time 單位時間內發射粒子的數量(以秒為單位)。這表示在每個時間單位內,系統會產生指定數量的粒子。例如:設為 10 表示系統每秒會產生 10 個粒子。
Rate over Distance 每移動一單位距離發射的粒子數量(以米為單位)。這表示粒子系統根據其移動距離來發射粒子,而不是時間。
例如:設為 5 時,則表示每移動一米時,系統會產生 5 個粒子。這個屬性在模擬由物體運動產生的粒子時非常有用(例如,從汽車輪子在泥土軌道上產生的灰塵)
這兩個值各自計算互不影響,例如系統在 10 秒內,移動了 5 米,那麼粒子系統會發射 10*(Rate over Time) + 5*(Rate over Distance) 個粒子
Bursts 一次性爆發是生成粒子的事件,這些設置允許在指定的時間點發射粒子。
Time :設置在粒子系統開始播放後多少秒的時間點上發射爆發。
Count :設置每次爆發可能發射的粒子數量。
Cycles :設置爆發要播放多少次。
Interval : 設置每個爆發周期觸發之間的時間間隔(以秒為單位)。
Probability :控制每次爆發事件生成粒子的可能性。越高的值將使系統產生更多粒子,若值為 1 則保證系統每次爆發事件都會生成粒子,不會有任何隨機性或不確定性。

發射(emission)率可以是恆定的,也可以根據曲線(curve)在系統的生命週期內發生變化。

Reference:

粒子系統的 Main Module

當建立一個新的粒子系統 GameObject,或是將粒子系統組件添加到現有的 GameObject 中時, Unity 就會將 Main Module 嵌入粒子系統中。

屬性 說明
Duration 粒子系統執行的時間長度(秒)
Looping 若啟用,粒子系統將會重複播放粒子
Prewarm 若啟用,粒子系統在播放前會先預加載。(只有在 Looping 屬性啟用時,才會生效)
Start Delay 粒子系統將延遲一段時間(秒)才播放
Start Lifetime 粒子系統的初始生命週期(秒)。也就是粒子在被建立出來到銷毀的這段時間
Start Speed 每個粒子的初始速度
3D Start Size 若啟用,則可分別控制每個軸的大小
Start Size 每個粒子初始的大小
3D Start Rotation 若啟用,則可分別控制每個軸的旋轉角度
Start Rotation 每個粒子的初始旋轉角度
Flip Rotation 讓一些粒子以相反的方向旋轉,值在 0 ~ 1,值越大,翻轉的越多。如值為 0.1 則會有 10%的粒子反轉。相反的方向是指與 Start Rotation 相反,當 Start Rotation 為 90 時,翻轉的粒子為 -90
Start Color 每個粒子的初始顏色
Gravity Modifier 縮放物理系統的重力值,值為零時會關閉重力
Simulation Space 目前粒子系統的參照座標。
Local space:控制粒子在父物件區域空間(local space)進行動畫,因此會隨著父物件移動。
World space :控制粒子在世界空間(world space)進行動畫。
Custom space :選擇一個物件,粒子將參照這個物件的位置
Simulation Speed 調整粒子的更新速度。當值為 0.5 則以半速播放, 1 則為原速播放
Delta Time Scale :會受 Time Scale 影響
Unscaled :不受 Time Scale 影響。例如:在暫停選單中,還可播放粒子。
Scaling Mode 選擇如何使用 transform 的縮放比例(scale)。
Hierarchy :粒子將跟隨父物件進行縮放。
Local :忽略任何父物件的transform,僅應用粒子系統 transform 的縮放比例。
Shape :將縮放應用於粒子的起始位置(start positions),但不影響它們的大小。
Play on Awake 如果啟用,在物件建立時,粒子系統就會自動啟動
Emitter Velocity 選擇粒子系統如何計算 Inherit Velocity 和 Emission 模組所使用的速度。
Rigidbody :若 Rigidbody 存在,則粒子系統可以透過 Rigidbody 計算速度。
Transform :透過追蹤 Transform 的移動來計算速度。 如果 Rigidbody 不存在的話,預設會使用 Transform
Custom :使用自訂的速度。
Max Particles 粒子的最大值,如果達到這個限制則會移除一些粒子
Auto Random Seed 如果設為 true ,則粒子系統每次播放時看起來都會不同。若設為 false ,則系統每次播放時都會相同
Random Seed Auto Random Seed 設為 false ,該值用於建立一個唯一的可重複效果
Stop Action 當系統中的所有粒子都結束時,可以讓系統執行某個動作。當所有粒子都消失且系統的運行時間超過其持續時間時,系統會被認為已停止。若循環播放(Looping)的系統,只有通過腳本停止系統時才會執行這個動作。
動作可以設為:
Disable :GameObject已停用。
Destory : GameObject已Destory 。
CallbackOnParticleSystemStopped Callback 會發送到附加在該 GameObject 上的所有腳本。
Culling Mode 選擇是否在粒子離開螢幕時暫停粒子系統的模擬。
Automatic :如果 Looping 啟用,則會使用 Pause ;其他的則會使用 Always Simulate
Pause And Catch-up :系統在離開螢幕時會停止模擬。當再次進入時,系統會執行一個大的步驟以達到在沒有暫停時應處於的位置。在複雜的系統中,這個選項可能會導致很高的效能損耗。
Pause :當螢幕關閉時,系統會停止模擬。
Always Simulate : 總是模擬,即使螢幕關閉也會模擬
Ring Buffer Mode 保存粒子存活,直到達到最大粒子數量。當新的粒子生成時,會回收最老的粒子,而不是在它們的生命結束時移除。
Disabled :停用 Buffer ,當粒子的生命週期結束時,系統會直接刪除粒子。
Pause Until Replaced :當粒子的生命週期結束時,會暫停這些舊的粒子,直到達到 Max Particle 的限制,一旦達到限制,系統會將這些暫停的粒子回收,讓它們重新出現為新的粒子。
Loop Until Replaced :在粒子結束生命週期時,它們會倒回到其生命週期的指定比例,直到達到最大粒子數量限制。一旦達到限制,系統會將這些粒子回收,使它們重新出現為新的粒子。

Start開始的屬性,如 lifetime , speed , size , rotation 與 color 等指定了粒子發射時的初始狀態。
所有粒子系統會使用物理設定中的重力,在 Gravity Modifier 的值可以用來調節重力的縮放,如果設為零則可關閉重力,讓粒子不被重力影響。
3D Start Size 屬性讓你可以個別指定粒子的寬(x),高(y)與深度(z),深度只會做用在 3D 網格(Mesh)中。此外還可為這些屬性設定隨機值,其值範圍可介於兩個常數或曲線之間。

Reference:

Scroll View

當建立 Scroll View 時,預設會建立多個組件(Component)。

  • Viewport :決定可視範圍
    • Content :在這個滾動視圖中的內容物件都將放置於這個 Content 中。它的尺寸多大,滾動視角就能滾多遠。
  • Scrollbar Horizontal :水平滾動條,可視需要刪除
  • Scrollbar Vertical :垂直滾動條,可視需要刪除

ScrollRect

ScrollRect 是 滾動視圖中的一個組件。

屬性 說明
Content 控制滾動視圖內容的父物件,它的尺寸多大,滾動視圖就能滾多遠。
Horizontal 是否啟用水平滾動
Vertical 是否啟用垂直滾動
Movement Type 滾動視圖元素的運動類型,主要控制拖動時的回應效果。
Unrestricted : 不受限制,隨便拖動。(一般不會使用)
Elastic :回效果,當滾出邊緣之後,會彈回邊界。(常用)。
Elasticity :回彈係數,控制回彈效果,值越大,回彈越慢。
Clamped :夾緊效果,始終限制在範圍內,沒有回彈效果。
Inertia 移動慣性,如果開啟,鬆開滑鼠後,會有一個移動慣性。
Deceleration Rate :減速率(0~1),0沒有慣性,1不會停止。
Scroll Sensitivity 滾輪(滑鼠中鍵)和觸控板(筆記型電腦)的滾動事件敏感性
Viewport 關聯滾動式圖內容的物件
Horizontal Scrollbar 關聯的水平滾動條物件。
Visibility :是否在不需要時自動隱藏滾動條。
Permanent :一直顯示滾動條。
Auto Hide :自動隱藏滾動條。
Auto Hide And Expend Viewport :自動隱藏滾動條並且自動擴展內容視角(Viewport)。
—— Spacing :滾動條和視角(Viewport)之間的間隔空間
Vertical Scrollbar 關聯的垂直滾動條物件

此外如果想對 Container 中的物件做排列的話,可以使用 Layout Group 組件

  • Grid Layout Group :網格(Grid)方式排列子物件
  • Horizontal Layout Group :水平方向(Width) 排列子物件
  • Vertical Layout Group :垂直方向(Height) 排列子物件

若想讓 Container 的大小自動符合內容物件的大小的話,可以使用 Container Size Filter 組件

RectTransform

RectTransform 組件(Component)是 2D 佈局(layout)中使用的組件,用於控制 UI 組件位置以及對齊方式,繼承自 Transform 組件。

  • Transform 表示一個點,只處理位置(Position),角度(Rotation)與縮放(Scale)
  • RectTransform 表示一個 2D 矩形,UI 元素可以放置在這個矩形內,並加入了錨點(Anchors),軸心點(Pivot),長寬等屬性。
  • 目的是控制 UI 元件大小,讓其可以自動適應解析度。
屬性 說明
Anchor 錨點,為相對於父矩形的錨點,值為 0 ~ 1。
Min:父矩形範圍內 X 和 Y 的最小值
Max:父矩形範圍內 X 和 Y 的最大值
Pivot 矩形範圍內的軸心點,值為 0 ~ 1。影響物件的旋轉,縮放,位置。在錨點計算位置中會用到
Pos (X, Y, Z) 軸心點相對於錨點的位置
Width, Height 矩形的寬高
Left/Top/Right/Bottom 矩形邊緣相的對於錨點的位置。當錨點分離時才會出現。
Ratation 圍繞軸心點的旋轉角度
Scale 縮放大小
BluePrint Mode 啟用後,編輯旋轉和縮放不會影響矩形,只會影響顯示內容
Raw Edit Mode 啟用後,改變軸心點和錨點值不會改變矩形位置,但會影響顯示內容

軸心點(Pivot)

軸心點為矩形範圍內的軸心點,它會影響物件的旋轉,縮放,位置。此外在錨點計算位置中會也用到

  • 在編輯器中,藍色空心圓就是軸心(Pivot)
  • 軸心的值為 0 ~ 1 之間
  • 預設值為 (0.5, 0.5),在矩形的中心。
  • 當值為 (0, 0) 時,會在矩形位置的左下角。
  • 當值為 (1, 1) 時,會在矩形的右上角。
  • 物件會根據軸心坐旋轉

錨點(Anchor)

錨點,為相對於父矩形的錨點。由 Min 和 Max 組成,這四個點在 Unity 編輯器中顯示為四個三角形,並組成一個矩形。

  • Min:父矩形範圍內 X 和 Y 的最小值。
  • Max:父矩形範圍內 X 和 Y 的最大值。
  • 錨點為一個點:當 Min 與 Max 相同時,錨點為一個點。
    • 預設 Min 與 Max 皆為 (0.5, 0.5)。此時,為父元素的中心。
    • Min 與 Max 皆為 (0, 0)。此時,為父元素的左下角。
    • Min 與 Max 皆為 (1.0, 1.0)。此時,為父元素的右上角。
    • 錨點為一個點的時候,編輯器左邊顯示的為 Pos XPox Y,在此情況下,將錨點看作原點座標,而錨點距離軸心的 X 距離為 Pos X ;錨點距離軸心的 Y 距離為 Pos Y
    • 這麼做的原因是為了適應不同解析度。例如,將錨點設定到右上角 Min(0,1) Max(0,1),那麼不論解析度如何改變,這個元件都可以根據錨點保持正確的距離。
    • 錨點為一個點的時候,編輯器左邊顯示的還有 WidthHeight ,這個寬高為元件的寬高,會依據軸心點而有所不同
  • 錨點為矩形:當 Min 與 Max 不同時,錨點會分離為一個矩形
    • Min 設為 (0.2, 0.1) , Max 設為 (0.8, 0.7)
    • 錨點為矩形時,編輯器左邊顯示會變為 LeftTopRightBottom。表示為錨點矩形與元件的矩形所形成的距離, Left 為左邊距離, Top 為上邊距離, Right 為右邊距離, Bottom 為下邊距離,如下圖。
    • 當錨點為矩形時,可以讓元件會根據父元件的變化而拉伸大小。常常用在背景圖。

BluePrint Mode

當勾選了 BluePrint Mode 之後,編輯旋轉和縮放不會影響矩形,只會影響顯示內容

一般不常使用。


Raw Edit Mode

啟用 Raw Edit Mode 後,當改變軸心點和錨點值不會改變矩形位置,但會影響顯示內容

  1. 開始圖
  2. 未啟用 Raw Edit Mode 去更改軸心,會發現軸心往上移動,但是圖形沒有變
  3. 啟用 Raw Edit Mode 去更改軸心,會發現軸心沒有變,但是圖形往下移動

一般不常使用。


使用 Unity 編輯器快速設定軸心與錨點

在編輯器中,會看到如下圖的按鈕,使用滑鼠左鍵點擊,它便會展開

展開後如下圖

使用滑鼠左鍵點擊,就可以快速的設定錨點位置(九宮格佈局)。

按下 Shift , 再點擊滑鼠左鍵,除了錨點位置,同時可以設定軸心點(相對自身矩形)
按下 Alt , 再點擊滑鼠左鍵,除了錨點位置,同時可以設置物件位置


在程式碼中,取得 RectTransform

因為 RectTransform 繼承自 Transform,因此當該遊戲物件擁有 RectTransform 時,只要將它的 Transform 轉型為 RectTransform 即可。

1
RectTransform rectTransform = (this.transform as RectTransform);

Reference:

Graphic Raycaster

Graphic Raycaster 是用來檢查UI輸入事件的圖形射線發射器。它主要負責透過射線檢查玩家和 UI 元素的交互,判斷是否點擊到了 UI 元素

屬性 說明
Ignore Reversed Graphics 是否忽略反轉圖形,預設為 true。(例如 當某個 UI 按鈕的 Rotation X 設為 180 ,這個按鈕就不能點擊)
Blocking Objects 射線被哪些類型的碰撞器(Collider)阻擋,在 Screen Space - Overlay 模式下無效。
Two D:UI 元件會被 2D 碰撞器擋住;
Three D:UI 元件會被 3D 碰撞器擋住;
All: UI 元件會被所有碰撞器擋住。
Blocking Mask 射線被哪些層的碰撞器阻擋,在 Screen Space - Overlay 模式下無效