分類:Unity、C#、VS2015 數組
建立日期:2016-03-31 緩存
Unity的相機用來向玩家呈現遊戲世界。你在場景中始終至少有一個相機,但也能夠有多個。多個相機能夠帶給您雙人分屏效果或建立高級的自定義效果。您可讓相機動起來,或者用物理(組件)控制它們。您能想到的任何東西,幾乎均可以經過相機變成可能,爲了配合您的遊戲風格,還可使用典型或獨特的相機。 函數
相機 (Camera)是爲玩家捕捉並展現世界的一種設備。經過自定義和操做相機,可使您的遊戲演示真正不同凡響。您能夠在一個場景中使用無數臺相機。這些相機能夠設置爲在屏幕的任何位置或只在某些部分按任何順序進行渲染。 性能
要將遊戲呈現給玩家,相機是必不可少的。能夠對相機進行自定義、腳本化或父子化,從而實現能夠想到的任何效果。在拼圖遊戲中,可讓相機 (Camera) 處於靜止狀態,以看到拼圖的全視圖。在第一人稱射擊遊戲中,能夠將相機 (Camera) 父子化至玩家角色,並將其放置在與角色眼睛等高的位置。在競速遊戲中,您可能但願讓相機追隨玩家的車輛。 設計
您能夠建立多個相機 (Camera),併爲每臺相機指定不一樣的深度 (Depth)。 相機按照低深度 (Depth) 到高深度 (Depth) .進行繪製。換而言之,深度 (Depth) 爲 2 的相機 (Camera) 會繪製在深度爲 1 的相機上方。您能夠調節規範化視口矩形 (Normalized View Port Rectangle) 的屬性值改變相機 (Camera) 在屏幕上的視圖大小和位置。這樣能夠建立多個像導彈相機、地圖視圖、後視鏡等這樣的微視圖。 3d
一、清除標記 (Clear Flags) orm
肯定要清除屏幕的哪些部分。在使用多臺「相機」(Camera) 繪製不一樣遊戲元素時會很方便。 對象
二、背景 (Background) blog
在將視線內的全部元素都繪製好且無天空盒以後應用於剩餘屏幕的顏色。 隊列
三、剔除遮蔽圖 (Culling Mask)
添加或刪除「相機」(Camera) 渲染的對象層。在檢視器 (Inspector) 中爲對象分配層。
四、投影 (Projection)
切換相機的模擬透視功能。
五、透視 (Perspective)
相機將用徹底透視的方式來渲染對象。即:近看遠看的效果不同。
六、正交 (Orthographic)
相機將用無透視感的渲染方法均勻渲染對象。即:近看遠看效果都同樣。
七、大小 (Size)(選擇「正交」(Orthographic) 時)
設置爲正交 (Orthographic) 時相機視口的大小。
八、視野 (Field of View)(選擇「透視」(Perspective) 時)
「相機」(Camera) 視角的寬度,沿局部座標的 Y 軸進行測量(以度爲單位)。
九、裁剪平面 (Clipping Planes)
相機到開始渲染和中止渲染的距離。
十、近點 (Near)
即將繪製時距離相機最近的點。
十一、遠點 (Far)
即將繪製時距離相機最遠的點。
十二、規範化視口矩形 (Normalized View Port Rect)
表示該相機視圖在屏幕上的繪製位置的四個值,在屏幕座標 (Screen Coordinates) 中(值 0 到 1)。
1三、X、Y
繪製相機視圖的水平起始位置、垂直起始位置。
1四、W、H
相機輸出到屏幕上的寬度、高度。
1五、深度 (Depth)
相機在繪圖順序中的位置。擁有較大值的相機將會繪製在擁有較小值相機之上。
1六、渲染路徑 (Rendering Path)
定義相機使用什麼渲染方法的選項。
1七、使用玩家設置 (Use Player Settings)
該相機將使用玩家設置 (Player Settings) 中設定的任意一個渲染路徑 (Rendering Path)。
1八、頂點光照 (Vertex Lit)
該相機渲染的全部對象都將做爲頂點光照 (Vertex-Lit) 的對象來渲染。
1九、正向渲染 (Forward)
全部對象都將按每種材質一個通道的方式進行渲染。
20、延時光照 (Deferred Lighting)(僅限 Unity 專業版)
全部對象都將無照明繪製一次,而後全部對象的照明都將在渲染隊列末端一塊兒渲染。
2一、目標紋理 (Target Texture) (僅限 Unity 專業版)
參考將包含「相機」(Camera) 視圖輸出的渲染紋理 。該引用將禁用相機 (Camera) 的屏幕渲染功能。
2二、高動態範圍 (HDR)
啓用該相機的高動態範圍 (High Dynamic Range) 渲染。
一、渲染路徑
Unity 支持不一樣的渲染路徑 (Rendering Path)。您應該根據遊戲內容和目標平臺/硬件進行選擇。不一樣的渲染路徑有不一樣的功能和性能特色,這些功能和性能特色主要影響燈光 (Lights) 和陰影 (Shadows)。
您能夠在「玩家設置」(Player Settings) 中選擇項目使用的渲染路徑 (Rendering Path)。此外,您能夠爲每一個相機 (Camera) 覆蓋渲染路徑。
有關渲染路徑的更多信息,請查看看渲染路徑頁面。
二、清除標記
每臺相機 (Camera) 在渲染視圖時儲存顏色和深度信息。沒有繪製的屏幕是空白的,在默認狀態下會顯示天空盒。使用多個相機 (Camera) 時,每一個相機都會在緩存區儲存各自的顏色和深度信息,並在渲染時累積更多數據。當場景中的任何相機渲染視圖時,能夠設置清除標記 (Clear Flags) 以清除緩存區信息中不一樣的收集數據。能夠經過如下四個選項之一來完成:
三、天空盒
這是默認設置。屏幕上全部空白部分都將顯示當前相機 (Camera) 的天空盒。若是當前相機 (Camera) 沒有設置天空盒,則會默認爲渲染設置 (編輯 (Edit) -> 渲染設置 (Render Settings))) 中所選的天空盒。以後會回到也可爲相機添加背景顏色 (Background Color)。也可爲相機添加天空盒組件 。若是要建立新的天空盒 (Skybox),請使用該向導。
四、純色
屏幕上全部空白部分都將顯示當前相機 (Camera) 的背景背景顏色 (Background Color)。
五、深度模式
若是要繪製玩家的槍而又不讓其在環境中被裁剪掉,能夠將深度 (Depth)爲 0 的相機 (Camera) 設置用於繪製環境,而另外一個深度 (Depth)爲 1 的相機用於單獨繪製武器清除標記 (Clear Flags) 應設置爲深度模式 (depth only)。這將使得環境圖像一直顯示在屏幕上,但會丟掉每一個對象在三維空間中的位置的全部信息。槍繪製完後,不透明部分將徹底覆蓋全部已繪製部分,不管槍與牆的距離有多近。
清除完相機前的深度緩存後,槍的繪製便完成了。
六、不清除
該模式既不清除顏色,也不清除深度緩存。其結果是,每幀繪製在下一幀之上,造成拖影效果。這在遊戲中不經常使用,最好是與自定義着色器一同使用。
七、裁剪平面
近、遠剪裁平面 (Clip Plane) 屬性決定了相機 (Camera) 視圖的開始位置和結束位置。這兩個平面與相機 (Camera) 方向垂直,並從相機位置開始度量。 近平面 (Near plane) 平面是即將渲染的最近位置,而遠平面 (Far plane) 平面是最遠位置。
裁剪平面還決定了深度緩存精度如何在場景上分佈。通常而言,爲了獲得更高的精度,應該將近平面 (Near plane) 平面移得儘量遠。
請注意:近、遠裁剪平面和相機視野肯定的平面一塊兒構成的區域就是俗稱的相機平截頭體 (frustum)。Unity 確保在您渲染對象時,那些徹底在這個平截頭體以外的對象將不會顯示。這稱之爲平截頭體剔除 (Frustum Culling)。不管您的遊戲中是否使用了遮擋剔除 (Occlusion Culling),都會出現平截頭體剔除 (Frustum Culling)。
For出於性能緣由,您可能須要儘早剔除小對象。例如,與大型建築相比,小石塊和碎片能夠在短得多的距離內不可見。要作到這一點,將小對象放在隔離層中並用 Camera.layerCullDistances 腳本函數設置每一層的剔除距離。
八、剔除遮蔽圖
剔除遮蔽圖使用層來選擇性地渲染數組對象。有關層的使用的更多信息,請點 這裏。
一般較好的作法是,將用戶界面 (User Interface) 放在不一樣的層上,而後使其自我渲染,同時用獨立的相機 (Camera) 渲染用戶界面層。
爲了使 UI 在其餘相機 (Camera) 視圖上方顯示,您還須要將清除標記 (Clear Flags) 設置爲深度模式 (Depth only) ,並確保 UI 相機 (Camera) 的深度 (Depth) 高於其餘相機 (Camera)。
九、規範化視口矩形
規範化視口矩形 (Normalized Viewport Rectangles) 專門用於定義當前相機視圖繪製在屏幕上的哪一部分。您能夠在屏幕右下角放置地圖視圖,或者在左上角放置彈頭視圖。只需一點設計,您就能夠利用 視口矩形 (Viewport Rectangle) 建立一些獨特的行爲。
使用規範化視口矩形 (Normalized Viewport Rectangle)可輕鬆建立雙人分屏效果。建立兩個相機後,將兩個相機的 H 值都改爲 0.5,而後將玩家甲的 Y 值設爲 0.5,玩家乙的 Y 值設爲 0。這樣,玩家甲的相機將從屏幕中間向上顯示,而玩家乙的相機將從底部開始並在屏幕中間中止。
下圖是使用規範化視口矩形 (Normalized Viewport Rectangle) 建立的雙人顯示:
十、正交
將相機 (Camera) 設置爲正交 (Orthographic) 會去掉相機視圖中的全部透視效果。這在製做等距或二維遊戲時很是有用。
請注意:霧是使用正交相機模式均勻渲染的,所以可能得不到期待的效果。有關上述緣由的更多信息,請參閱渲染設置組件參考。
十一、透視相機
正交相機。這裏的對象不會因距離遠而變小!
十二、渲染紋理
只有 Unity 高級版才能使用此功能。該功能能夠將相機視圖放在能夠應用於另外一個對象的紋理上。這使得建立體育場大屏幕、監控攝像機和倒影等變得簡單。
下圖是用於建立直播現場相機的渲染紋理 (Render Texture):
提示
• 相機能夠像其餘任何遊戲對象 (GameObject) 同樣被實例化、父子化和腳本化。
• 要想增長競速遊戲的速度感,請使用大視野 (Field of View)。
• 若是添加了剛體 (Rigidbody) 組件 (Component),相機即可用於物理模擬。
• 場景中使用的相機數量沒有限制。
• 正交相機很是適合製做 3D 用戶界面
• 若是遇到深度假象(相鄰面忽隱忽現),請嘗試將近平面 (Near Plane) 設置得儘量大。
• 相機不能同時渲染遊戲屏幕 (Game Screen) 和渲染紋理 (Render Texture),其只能渲染其中一個。
• 專業許可證持有者能夠選擇將相機視圖渲染到紋理,該選項稱爲「渲染到紋理」(Render-to-Texture)。經過該選項可得到更加獨特的效果。
• Unity 帶有預先安裝的相機 (Camera) 腳本,您能夠經過 組件 (Component) -> 相機控制 (Camera Control) 找到。使用它們來體驗一下無限的可能性吧。