2014-07-08 17 views
0

我想要適合我所有分辨率的界面。我有這樣的代碼如何爲所有分辨率創建Vector3

private void OnEnable() { 
    GameObject back = Instantiate(Background) as GameObject; 

    BoxCollider2D back_bc2d = back.GetComponent<BoxCollider2D>(); 

    float x = ((Screen.currentResolution.width)/back_bc2d.size.x)/2; 
    float y = (Screen.currentResolution.height/back_bc2d.size.y); 

    back.transform.localScale = new Vector3(x, y, back.transform.localScale.z); 
    Destroy(back_bc2d);  
} 

正如你所看到的,我試圖創造一些像GUI.DrawTexture(我不希望使用的,因爲某些原因GUI.DrawTexture) 我的紋理具有借鑑一半屏幕。 但在不同的分辨率下它不起作用。我做錯了什麼?

回答

1

屏幕分辨率並不意味着世界空間中的任何東西,只有高寬比在那裏很重要。遊戲中的幾何尺寸在每個分辨率下都是相同的,只有視口可能會更寬,才能顯示更多 - 這就是相機的工作原理。

此外,你不應該從屏幕空間座標派生出世界空間中使用的localScale--它們不以這種方式工作。

如果你想在世界空間相對於相機定位幾何幾何體,請使用http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html