一,經過編輯器中數值計算。面試
如圖,相機爲Orthographic模式,其camera size爲5.57,是什麼含義呢,通過測量,發現視圖中視截體的高度是5.57x2。算法
那麼視截體的寬度怎麼決定呢?編輯器
作下面試驗,前面屏幕尺寸選的是Web(600x900),因此 視截體寬度=視截體長度/900*600=7.426。經測量,這個值是對的。spa
假如咱們將屏幕規格選爲5:4,如圖:3d
而後再回到Scene視圖下,能夠看到視截體的形狀發生了變化:blog
不過能夠看出視截體的高度並無發生變化,仍然是5.57x2。按照前面的算法,視截體寬度=視截體高度/4*5=13.925。經測量,這個值是對的。rust
另外,若是調整Viewport Rect的W和H,也會影響視截體形狀,但只要H不取0,視截體高度就永遠等於2xsize值(5.57x2),因此有意義的只是W和H的比值。bug
因而能夠總結:float
在Orthographic模式下,視截體尺寸可以下計算:im
視截體高度= camera.size
視截體寬度= 視截體高度*(screenWidth/screenHeight)*(camera.viewportRect.W/camera.viewportRect.H)
二,在腳本中計算。
public GameObject mainCamera;
void Start () {
float frustumHeight = mainCamera.GetComponent<Camera> ().orthographicSize*2;
float frustumWidth = frustumHeight*mainCamera.GetComponent<Camera> ().aspect;
Debug.Log (frustumWidth);
Debug.Log (frustumHeight);
}
在腳本中直接用mainCamera.GetComponent<Camera> ().aspect便可,裏面已經包含了screen長寬比和viewportRect長寬比的影響。