如何为所有分辨率创建Vector3

时间:2014-07-08 07:37:49

标签: vector unity3d

我试图让我的界面适合所有分辨率。我有这个代码

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 个答案:

答案 0 :(得分:1)

屏幕分辨率并不代表世界空间中的任何内容,只有宽高比在那里很重要。游戏几何尺寸在每个分辨率中都是相同的,只有视口可能更宽,显示更多 - 这是相机的工作方式。

此外,您不应从屏幕空间坐标派生世界空间中使用的localScale - 它们不会以这种方式工作。

如果要将某些几何体相对于相机放置在世界空间中,请使用http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html