我试图让我的界面适合所有分辨率。我有这个代码
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) 我的纹理必须画在半屏幕上。 但是在不同的分辨率上它并不起作用。我做错了什么?
答案 0 :(得分:1)
屏幕分辨率并不代表世界空间中的任何内容,只有宽高比在那里很重要。游戏几何尺寸在每个分辨率中都是相同的,只有视口可能更宽,显示更多 - 这是相机的工作方式。
此外,您不应从屏幕空间坐标派生世界空间中使用的localScale
- 它们不会以这种方式工作。
如果要将某些几何体相对于相机放置在世界空间中,请使用http://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html