一、Carema
靜態(tài)屬性?allCameras,allCamerasCount,main
實(shí)例屬性?參考屬性面板
實(shí)例方法
?ScreenPointToRay() 屏幕位置轉(zhuǎn)射線 返回一條射線從攝像機(jī)通過一個(gè)屏幕點(diǎn)。
?ScreenToWorldPoint() 屏幕轉(zhuǎn)視窗位置 從屏幕空間到視窗空間的變換位置。
屏幕空間以像素定義。屏幕的左下為(0,0);右上是(pixelWidth,pixelHeight),Z的位置是以世界單位衡量的到相機(jī)的距離。 ?WorldToScreenPoint() 世界轉(zhuǎn)屏幕位置 從世界空間到屏幕空間變換位置?WorldToViewportPoint() 視窗轉(zhuǎn)世界位置 視口空間是歸一化的并相對(duì)于相機(jī)的,相機(jī)的左下為(0,0);右上是(1,1);Z的位置是以世界單位衡量的到相機(jī)的距離。


攝像機(jī)屬性:

***Clear Flags ***
清除標(biāo)識(shí):確定了屏幕哪些部分將被清除,方便多個(gè)攝像機(jī)畫不同的游戲元素
Skybox
天空盒:這是默認(rèn)設(shè)置。屏幕上的任何空的部分將顯示當(dāng)前相機(jī)的天空盒。如果當(dāng)前的相機(jī)沒有設(shè)置天空盒,它會(huì)默認(rèn)在渲染設(shè)置(Render Settings )選擇天空盒
Solid Color
純色,屏幕上的空白部分將顯示當(dāng)前攝像機(jī)的背景色
Depth Only
深度相機(jī),只渲染采集到的畫面如果你想繪制一個(gè)玩家的槍,又不讓它內(nèi)部環(huán)境被裁剪,你會(huì)設(shè)置深度為0的相機(jī)繪制環(huán)境,和另一個(gè)深度為1的相機(jī)單獨(dú)繪制武器。武器相機(jī)的清除標(biāo)志(Clear Flags )應(yīng)設(shè)置 為depth only。
Don't Clear 不清除此模式不清除顏色或深度緩存。每幀的渲染畫面疊加在上一幀畫面之上。

Rendering Path
渲染路徑 :定義什么繪制方法被用于相機(jī)的選項(xiàng)
Use Player Settings 使用玩家設(shè)置:在玩家設(shè)置(Player Settings.)相機(jī)使用哪個(gè)渲染路徑。
Forward 正向渲染:所有對(duì)象每材質(zhì)渲染只渲染一次,快速渲染
Deferred 延遲照明:所有物體將在無光照的環(huán)境渲染一次,然后在渲染隊(duì)列尾部將物體的光照一起渲染出來。
Legacy Vertex Lit 頂點(diǎn)光照 :所有被這個(gè)相機(jī)渲染的物體都將渲染成Vertex-Lit物體。
Legacy Deferred : 舊的延遲光照

Traget Texture
目標(biāo)紋理:渲染紋理 (Render Texture)包含相機(jī)視圖輸出。這會(huì)使相機(jī)渲染在屏幕上的能力被禁止??捎糜趯?shí)現(xiàn)畫中畫或者畫面特效
Occlusion Culling :
是否剔除物體背向攝像機(jī)的部分HDR:高動(dòng)態(tài)光照渲染,啟動(dòng)相機(jī)高動(dòng)態(tài)范圍渲染功能。讓場(chǎng)景更真實(shí)。

Projection
Perrspective:透視:攝像機(jī)(Camera)將使物體和透視完好無損。
Orthographic 正交:標(biāo)識(shí)正交相機(jī)模式,從相機(jī)的視圖中刪除所有的透視效果,最主要用在等距或2D游戲中。注意霧是在正交相機(jī)模式下渲染,因此可能不會(huì)如預(yù)期般出現(xiàn)
Vertex Lit:頂點(diǎn)光照####
這個(gè)Shader是Vertex-Lit,是最簡(jiǎn)單的Shader之一。這個(gè)Shader渲染代價(jià)是非常小的所有照射在該物體上的光源通過一次光能傳遞渲染完成并且只計(jì)算頂點(diǎn)光源。因?yàn)槭荲ertex-Lit,所以不會(huì)有任何基于像素渲染的效果,例如:Light Cookies,Normal Mapping和Shadows。這個(gè)Shader對(duì)模型的細(xì)分同樣更加敏感,假如在很靠近立方體的地方放置一個(gè)點(diǎn)光源,并且應(yīng)用這個(gè)Shader,這個(gè)光源只會(huì)在此角落進(jìn)行計(jì)算
General shader performance 通常的著色器性能
Unlit:不發(fā)光。這只是一個(gè)紋理,不被任何光照影響VertexLit. 頂點(diǎn)光照
Diffuse. 漫反射
Normal mapped. ?法線貼圖,比漫反射更昂貴:增加了一個(gè)或更多紋理(法線貼圖)和幾個(gè)著色器結(jié)構(gòu)
Specular.:?高光。這增加了特殊的高光計(jì)算
Normal Mapped Specular:高光法線貼圖。這比高光更昂貴一點(diǎn)
Parallax Normal mapped: ?視差法線貼圖。這增加了視差法線貼圖計(jì)算
Parallax Normal Mapped Specular..?視差高光法線貼圖。這增加了視差法線貼圖和鏡面高光計(jì)算
二、射線
射線:射線是3D世界中一個(gè)點(diǎn)向一個(gè)方向發(fā)射的一條無終點(diǎn)的線,在發(fā)射軌跡中與其他物體發(fā)生碰撞時(shí),它將停止發(fā)射 。
用途:射線應(yīng)用范圍比較廣, 多用于碰撞檢測(cè)(如:子彈飛行是否擊中目標(biāo))、角色移動(dòng)等 等。


API:
1、Ray Camera.main.ScreenPointToRay(Vector3 pos) 返回一條射線Ray從攝像機(jī)到屏幕指定一個(gè)點(diǎn)
2、Ray Camera.main.ViewportPointToRay(Vector3 pos) 返回一條射線Ray從攝像機(jī)到視口(視口之外無效)指定一個(gè)點(diǎn)
3、Ray 射線類
4、RaycastHit 光線投射碰撞信息
5、bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float distance, int layerMask)
在場(chǎng)景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的細(xì)節(jié)信息()。
bool Physics.Raycast(Ray ray, float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit,float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假
注意:如果從一個(gè)球型體的內(nèi)部到外部用光線投射,返回為假。
origin : 在世界坐標(biāo)中射線的起始點(diǎn)
direction: 射線的方向
distance: 射線的長(zhǎng)度
hit: 使用c#中out關(guān)鍵字傳入一個(gè)空的碰撞信息類,然后碰撞后賦值。可以得到碰撞物體的transform,rigidbody,point等信息。
layerMask: 只選定Layermask層內(nèi)的碰撞器,其它層內(nèi)碰撞器忽略。 選擇性的碰撞
6、RaycastHit[] RaycastAll(Ray ray, float distance, int layerMask)
投射一條光線并返回所有碰撞,也就是投射光線并返回一個(gè)RaycastHit[]結(jié)構(gòu)體。
物體怎么向前方發(fā)射一條射線
// 從自身坐標(biāo)到世界坐標(biāo)變換方向。
// 變換方向x, y, z從自身坐標(biāo)到世界坐標(biāo)。
Vector3 fwd = transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, fwd,out hit,1))
Debug.DrawLine(transform.position,hit.point,Color.red);
其中,Physics.Raycast(transform.position, fwd,out hit,1)為發(fā)射射線函數(shù),transform.position為射線原點(diǎn),fwd為發(fā)射方向,1為距離。
如果前方有碰撞體,則發(fā)射射線。

三、常用類Playerprefs
靜態(tài)方法?SetFloat(),SetInt(),SetString() 寫入數(shù)據(jù)?GetFloat(),GetInt(),GetString() 讀取數(shù)據(jù)?DeleteKey(),DeleteAll() 刪除數(shù)據(jù)?HasKey(“SS”), 檢查數(shù)據(jù),是否有該鍵?Save()
public string Name
{
get{
return PlayerPrefs.GetString(“Name”);
}
set{
PlayerPrefs.SetString(“Name”,value);
PlayerPrefs.Save();
}
}