Cemera攝像機:
Unity主要核心組件之一。顯示場景中,攝像機照射部分,是向玩家捕獲和顯示世界的設備。
1.
ClearFlags :清除標記。顯示背景內容,默認為天空盒子
代碼設置:
m_Camera.GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;
如果沒有指定天空盒子,在屏幕顯示默認背景色。
Solic Color:空白處將顯示默認此處設置背景色
Depth Only:僅深度,該模式用於對象不被裁剪。
Dont Clear :不清除,該模式不清除任何顏色或深度緩存,但這樣每幀渲染的結果都會疊加在下一幀上。
選Depth Only的效果:
如何實現看到后邊的小圓球呢?
再創建一個攝像機Camera2,兩個攝像機都設置為Depth Only,小圓球創建一個Layer層 layer1,設置Camera2的CullingMask為層設置為layer1,
並且Camera2的深度比Camera1的深度大。
原因:每個攝像機賦予不同的深度值。攝像機是從低深度值到高深度值次序繪制,一個深度值為2的攝像機將會在深度為1的攝像機繪制完成后再繪制。
設置Dont Clear: 不清除任何顏色或深度緩存,但這樣每幀渲染的結果都會疊加在下一幀上。
程序運行后,看到這樣的效果
第二。Background: 背景顏色(屬性)
設置獲取背景色代碼

1 Color c = m_Camera.GetComponent<Camera>().backgroundColor; 2 m_Camera.GetComponent<Camera>().backgroundColor = Color.red; //設置背景顏色
第三。Culling Mask:剔除遮罩,顯示某些層(去掉不顯示的層)
第四。Projection: 攝像機投射方式
perspective透視:以3D方式觀察物體 特點:近大遠小
Orthographic正交:以2D方式觀察物體(沒有近大遠小效果)
第五。Field of view 視野范圍
1 // public float fieldOfView { get; set; } 屬性 2 m_Camera.GetComponent<Camera>().fieldOfView = 12; 3 float num2 = m_Camera.GetComponent<Camera>().fieldOfView;
第六。Clipping Planes 剪切面。 攝像機渲染的距離
Near:最近點, Far:最遠點
第七。.Viewport Rece: 可控制視窗的偏移量
Vewport Rect: 設置 0-1 ,左下角為原點
第八。Depth:攝像機深度
1 // 攝像機深度(若存在若干攝像機,則渲染數值越小的攝像機畫面渲染越早,在最后面 2 m_Camera.GetComponent<Camera>().depth = 12; 3 float num3 = m_Camera.GetComponent<Camera>().depth
第九。Rendering Path: 渲染路徑。設定攝像機渲染方法
1 //獲取渲染路徑 2 RenderingPath rp = m_Camera.GetComponent<Camera>().renderingPath; 3 //設置渲染路徑 4 m_Camera.GetComponent<Camera>().renderingPath = RenderingPath.DeferredLighting;
渲染路徑四種方式:
Use Player Settings:使用Project Settings>Player中的設置
Vertex Lit:頂點光照,將所有的對象做為頂點光照對象來渲染
Forward:快速渲染,攝像機將對所有對象按每種材質一個通道的方式來渲染。
DeferredLighting:延遲光照,先對所有對象進行一次無光照渲染,用屏幕空間大小的Buffer保存幾何體的深度、法線以及高光強度,生成的Buffer將用於計算光照,同時生成一張新的光照信息Buffer。最后所有對象再次被渲染,渲染時疊加光照信息BUffer的內容
第十:Target Texture: 目標貼圖紋理
原理::就是將此攝像機攝像的畫面影響實時打在一張指定的目標貼圖上,
此時,這張貼圖存有這個攝像機所攝的實況轉播信息了,則此貼圖可以隨便放在某個Plane地板或者UI界面中
簡單制作演示過程:
創建一個貼圖紋理 :
最后看效果:gif錄制不是很清晰。
左側是Plane。移動攝像機,右下角攝像機攝到的內容和Plane中的一樣
第十一: Occlusion Culling :是否使用遮罩剔除
m_Camera.GetComponent<Camera>().useOcclusionCulling = true; bool b = m_Camera.GetComponent<Camera>().useOcclusionCulling;
第十二: HDR: 啟用攝像機高動態范圍渲染,用於啟用攝像機的高動態范圍渲染功能,因為人眼對的范圍的光照強度更為敏感,所有用高動態范圍渲染能讓場景變得更為真實,光照的變化不會顯得太突兀。
1 m_Camera.GetComponent<Camera>().allowHDR = true; 2 bool b2= m_Camera.GetComponent<Camera>().allowHDR;