Unity-線渲染器 (Line Renderer)
線渲染器 (Line Renderer)?組件采用 3D 空間中兩個(gè)或多個(gè)點(diǎn)的數(shù)組,在每個(gè)點(diǎn)之間繪制一條直線??梢允褂镁€渲染器 (Line Renderer) 來(lái)繪制從簡(jiǎn)單直線到復(fù)雜螺旋線的任何線條。
這條線始終是連續(xù)的;如果需要繪制兩條或更多完全獨(dú)立的線,則應(yīng)使用多個(gè)游戲?qū)ο?,每個(gè)游戲?qū)ο蠖家凶约旱木€渲染器 (Line Renderer)。
線渲染器 (Line Renderer) 不渲染寬度以像素為單位的線。它會(huì)渲染寬度以世界單位為單位的多邊形。線渲染器 (Line Renderer) 使用與軌跡渲染器 (Trail Renderer)?相同的線渲染算法。
準(zhǔn)備開(kāi)始
要?jiǎng)?chuàng)建線渲染器,請(qǐng)執(zhí)行以下操作:
1.在 Unity 菜單欄中,選擇?GameObject?>?Effects?>?Line。 2.選擇 Line Renderer 游戲?qū)ο蟆?3.通過(guò)在 Inspector 窗口中直接設(shè)置數(shù)組值或使用 Create Points?場(chǎng)景編輯模式,可以將點(diǎn)添加到 Line Renderer 的 Positions 數(shù)組中。 4.使用 Inspector 窗口配置線條的顏色、寬度和其他顯示設(shè)置。

線渲染器材質(zhì) (Line Renderer Materials)
默認(rèn)情況下,線渲染器 (Line Renderer) 使用內(nèi)置材質(zhì)?Default-Line。您可以更改線條的外觀而無(wú)需更改此材質(zhì),例如編輯線條的顏色漸變或?qū)挾取?/p>
對(duì)于其他效果,例如在線條上應(yīng)用紋理,需要使用其他材質(zhì)。如果您不想為新材質(zhì)編寫(xiě)自己的著色器,可以將 Unity 內(nèi)置的標(biāo)準(zhǔn)粒子著色器與線渲染器 (Line Renderer) 結(jié)合使用。
請(qǐng)參閱創(chuàng)建和使用材質(zhì)以了解更多信息。
線渲染器場(chǎng)景編輯模式 (Line Renderer Scene Editing Mode)
可以使用線渲染器 (Line Renderer) 的 Inspector 來(lái)更改場(chǎng)景編輯模式。不同的場(chǎng)景編輯模式讓您能夠以不同的方式使用 Scene 視圖和 Inspector 來(lái)編輯線渲染器 (Line Renderer)。
有三種場(chǎng)景編輯模式:None、Edit Points?和?Create Points。
設(shè)置場(chǎng)景編輯模式

使用 Inspector 頂部的?Edit Points?和?Create Points?按鈕可以設(shè)置當(dāng)前的場(chǎng)景編輯模式。
單擊?Edit Points?按鈕可以將場(chǎng)景編輯模式設(shè)置為?Edit Points。再次單擊該按鈕可以將場(chǎng)景編輯模式設(shè)置為?None。
單擊?Create Points?按鈕可以將場(chǎng)景編輯模式設(shè)置為?Create Points。再次單擊該按鈕可以將場(chǎng)景編輯模式設(shè)置為?None。
場(chǎng)景編輯模式:None

如果未選擇場(chǎng)景編輯模式,則可以配置并執(zhí)行簡(jiǎn)化操作,從 Positions 數(shù)組中刪除不必要的點(diǎn)。
Inspector 中會(huì)顯示以下控件:
控件????????????????????????????描述
Simplify Preview啟用?Simplify Preview?可以查看簡(jiǎn)化操作結(jié)果的預(yù)覽。
Tolerance設(shè)置簡(jiǎn)化線可以偏離原始線的偏差量。
值為 0 不會(huì)導(dǎo)致偏差,因此幾乎沒(méi)有簡(jiǎn)化。較高的正值會(huì)導(dǎo)致與原始線的偏差更大,因此更加簡(jiǎn)化。
默認(rèn)值為 1。
Simplify單擊?Simplify?可以減少線渲染器 (Line Renderer) 的?Positions?數(shù)組中的元素?cái)?shù)量。
簡(jiǎn)化操作使用?Ramer-Douglas-Peucker 算法根據(jù)?Tolerance?值來(lái)減少點(diǎn)數(shù)。
場(chǎng)景編輯模式:Edit Points
當(dāng)場(chǎng)景編輯模式設(shè)置為?Edit Points?時(shí),Unity 在 Scene 視圖中將線渲染器 (Line Renderer) 的 Positions 數(shù)組中的每個(gè)點(diǎn)表示為黃色球形。可以使用移動(dòng)工具移動(dòng)各個(gè)點(diǎn)。
Inspector 中會(huì)顯示以下控件:
控件描述Show Wireframe啟用此設(shè)置后,Unity 會(huì)在 Scene 視圖中繪制線框以使線條顯示出來(lái)。Subdivide Selected選擇兩個(gè)或多個(gè)相鄰點(diǎn)時(shí)將會(huì)啟用此按鈕。按下此按鈕將在選定的相鄰點(diǎn)之間插入一個(gè)新點(diǎn)。
場(chǎng)景編輯模式:Create Points

當(dāng)場(chǎng)景編輯模式設(shè)置為?Create Points?時(shí),可以在 Scene 視圖中單擊以將新點(diǎn)添加到線渲染器 (Line Renderer) 的 Positions 數(shù)組的末尾。
Inspector 中會(huì)顯示以下控件:
控件????????????????????????????????????????????描述
Input設(shè)置要用于創(chuàng)建點(diǎn)的輸入法。
Mouse position根據(jù)鼠標(biāo)在 Scene 視圖中的位置創(chuàng)建點(diǎn)。
Physics Raycast根據(jù)場(chǎng)景中的射線投射創(chuàng)建點(diǎn)。Unity 在射線投射到的位置創(chuàng)建點(diǎn)。
Layer Mask執(zhí)行射線投射時(shí)要使用的圖層遮罩。僅當(dāng)?Input?設(shè)置為?Physics Raycast?時(shí),此屬性才可見(jiàn)。
Min Vertex Distance拖動(dòng)鼠標(biāo)以在 Scene 視圖中創(chuàng)建點(diǎn)時(shí),如果與最后一個(gè)點(diǎn)之間的距離超過(guò)此距離,則線渲染器 (Line Renderer) 將創(chuàng)建一個(gè)新點(diǎn)。
Offset應(yīng)用于所創(chuàng)建的點(diǎn)的偏移量。當(dāng)?Input?設(shè)置為?Mouse Position?時(shí),線渲染器 (Line Renderer) 將應(yīng)用來(lái)自場(chǎng)景攝像機(jī)的偏移量。當(dāng) Input 設(shè)置為?Physics Raycast?時(shí),線渲染器 (Line Renderer) 將應(yīng)用來(lái)自射線投射法線的偏移量。
屬性

本節(jié)包含以下小節(jié):
線設(shè)置 (Line settings)
Materials
Lighting
Probes
Additional settings
線設(shè)置 (Line settings)
屬性????????????????????????????????????????????????????功能
Loop啟用此屬性可連接線的第一個(gè)和最后一個(gè)位置并形成一個(gè)閉環(huán)。
Positions要連接的 Vector3 點(diǎn)的數(shù)組。
Width定義寬度值和曲線值以控制線沿其長(zhǎng)度的寬度。
曲線是在每個(gè)頂點(diǎn)處采樣的,因此其精度受制于線中的頂點(diǎn)數(shù)量。線的總寬度由寬度值控制。Color定義一個(gè)漸變來(lái)控制線沿其長(zhǎng)度的顏色。
Unity 在每個(gè)頂點(diǎn)處從顏色漸變 (Color Gradient) 中采樣顏色。在每個(gè)頂點(diǎn)之間,Unity 對(duì)顏色應(yīng)用線性插值。向線添加更多頂點(diǎn)可能會(huì)更接近詳細(xì)的漸變。
Corner Vertices此屬性指示在繪制線中的角時(shí)使用多少個(gè)額外頂點(diǎn)。增加此值可使線的角顯得更圓。
End Cap Vertices此屬性指示使用多少個(gè)額外頂點(diǎn)在線上創(chuàng)建端蓋。增加此值可使線的端蓋顯得更圓。
Alignment設(shè)置線面向的方向。
View線面向攝像機(jī)。
TransformZ線朝向其變換組件的 Z 軸。
Texture Mode控制如何將紋理應(yīng)用于線。
Stretch沿線的整個(gè)長(zhǎng)度映射紋理一次。
Tile基于線長(zhǎng)度(采用世界單位)沿線重復(fù)紋理。要設(shè)置平鋪率,請(qǐng)使用?Material.SetTextureScale。
DistributePerSegment沿線的整個(gè)長(zhǎng)度映射紋理一次(假設(shè)所有頂點(diǎn)均勻分布)。
RepeatPerSegment沿線重復(fù)紋理(按每個(gè)線細(xì)分段一次的比率重復(fù))。要調(diào)整平鋪率,請(qǐng)使用?Material.SetTextureScale。
Shadow Bias設(shè)置沿著光照方向的陰影移動(dòng)量以消除因使用公告牌幾何體來(lái)模擬體積而導(dǎo)致的陰影瑕疵。
Generate Lighting Data如果啟用此屬性,Unity 在構(gòu)建線幾何體時(shí)包含法線和切線。這樣,線幾何體就可以使用采用了場(chǎng)景光照的材質(zhì)。
Use World Space如果啟用此屬性,這些點(diǎn)被視為世界空間坐標(biāo)。如果禁用此屬性,這些點(diǎn)位于此組件附加到的游戲?qū)ο蟮淖儞Q組件本地。
材質(zhì)
Line Renderer Inspector 中的?Materials?部分列出了?Line Renderer?當(dāng)前使用的材質(zhì)。
屬性????????????????????????????????????????????????????????功能
Size指定 Line Renderer 中的?Materials?數(shù)量。如果減小?Materials?列表大小,Unity 會(huì)刪除列表末尾的元素。
ElementLine Renderer 中的?Materials?列表(以數(shù)字順序排列)。第一個(gè)元素始終命名為 Element 0。
Lighting
Lighting?部分包含的屬性用于指定此線渲染器 (Line Renderer) 如何在 Unity 中與光照相互影響。
屬性????????????????????????????????????????????????????????????????????????功能
Cast Shadows指定在合適的光源照射在線上時(shí)該線是否以及如何投射陰影。
On投射陰影的光源照在線上時(shí),該線將投射陰影。
Off線不會(huì)投射陰影。
Two Sided線從任一側(cè)投射雙面陰影。Enlighten 和漸進(jìn)光照貼圖 (Progressive Lightmapper) 不支持雙面陰影。
Shadows Only線的陰影可見(jiàn),但線本身不可見(jiàn)。
Receive Shadows啟用此選項(xiàng)可使線顯示任何投射在線上的陰影。僅當(dāng)使用漸進(jìn)光照貼圖時(shí)才支持這個(gè)選項(xiàng)。
Probes
Probes?部分包含與光照探針 (Light Probes) 和反射探針 (Reflection Probes) 有關(guān)的屬性。
屬性????????????????????????????????????????功能
Light Probes????????設(shè)置此渲染器如何從光照探針系統(tǒng)接收光照。
有關(guān)更多信息,請(qǐng)參閱光照探針。
Off渲染器不使用任何插值光照探針。
Blend Probes渲染器使用一個(gè)插值光照探針。這是默認(rèn)值。
Use Proxy Volume渲染器使用插值光照探針的 3D 網(wǎng)格。
Custom Provided渲染器從?MaterialPropertyBlock?提取光照探針著色器 uniform 值。
Proxy Volume Override設(shè)置對(duì)另一個(gè)具有 Light Probe Proxy Volume 組件的游戲?qū)ο蟮囊谩?br>
僅當(dāng)?Light Probes?設(shè)置為?Use Proxy Volume?時(shí),此屬性才可見(jiàn)。
Reflection Probes設(shè)置渲染器如何從反射探針系統(tǒng)接收反射。
Off禁用反射探針。Unity 將天空盒用于反射。
Blend Probes啟用反射探針。混合僅在反射探針之間發(fā)生。在室內(nèi)環(huán)境中,如果角色可能在具有不同光照設(shè)置的區(qū)域之間過(guò)渡,此設(shè)置會(huì)很有用。
Blend Probes and Skybox啟用反射探針?;旌习l(fā)生在反射探針之間或反射探針與默認(rèn)反射之間。這對(duì)于室外環(huán)境很有用。
Simple啟用反射探針,但存在兩個(gè)重疊的探針體積時(shí),反射探針之間不會(huì)發(fā)生混合。
Anchor Override設(shè)置變換組件,在使用光照探針或反射探針系統(tǒng)時(shí)由 Unity 用來(lái)確定插值位置。默認(rèn)情況下,這個(gè)位置是渲染器幾何體的包圍盒中心。
Additional Settings
Additional Settings?包含額外的屬性。
屬性????????????????????????????????????????????????????????????功能
Motion Vectors設(shè)置是否使用運(yùn)動(dòng)矢量來(lái)跟蹤此渲染器從一幀到下一幀的每像素屏幕空間運(yùn)動(dòng)。使用此信息可以應(yīng)用后期處理效果,例如運(yùn)動(dòng)模糊。
請(qǐng)注意,并非所有平臺(tái)都支持運(yùn)動(dòng)矢量。請(qǐng)參閱?SystemInfo.supportsMotionVectors?以了解更多信息。
Camera Motion Only僅使用攝像機(jī)移動(dòng)來(lái)跟蹤運(yùn)動(dòng)。
Per Object Motion使用特定通道來(lái)跟蹤此渲染器的運(yùn)動(dòng)。
Force No Motion不跟蹤運(yùn)動(dòng)。
Dynamic Occlusion啟用?Dynamic Occlusion?后,此渲染器在攝像機(jī)的視圖中被靜態(tài)遮擋物 (Static Occluder) 阻擋時(shí),Unity 會(huì)剔除此渲染器。默認(rèn)情況下啟用 Dynamic Occlusion。
禁用?Dynamic Occlusion?后,此渲染器在攝像機(jī)的視圖中被靜態(tài)遮擋物 (Static Occluder) 阻擋時(shí),Unity 不剔除此渲染器。禁用 Dynamic Occlusion 可以實(shí)現(xiàn)諸如在墻后繪制角色輪廓之類的效果。
請(qǐng)參閱有關(guān)遮擋剔除的文檔以了解更多信息。
Sorting Layer此渲染器的排序圖層的名稱。
Order in Layer此渲染器在排序圖層中的順序。