Unity-3d-5将16:9的图像缩放到其他分辨率

时间:2016-10-03 17:00:52

标签: image unity3d sprite scaling

所以我创建了一个带有2d精灵边框的蛇形游戏。我的游戏窗口设置为16:9,在此分辨率下图像看起来很好。然而,扩展到任何其他东西开始使游戏看起来很奇怪。我希望游戏窗口可以重新调整大小。如何根据当前分辨率使我的精灵拉伸和缩小?

  • 我已经尝试创建一个宽度为120,高度为1的精灵,然后使用x,y,z刻度将刻度更改为16.这会产生一个巨大的精灵。
  • 我正在尝试使用画布缩放器,但没有成功。
  • 我的最终目标不是让我的游戏适合16:9之类的预定义分辨率,而是根据当前窗口大小进行缩放。因此,如果它们使窗户非常薄,那么游戏只会使顶部和底部边界变得非常薄,同时仍然会将游戏玩法限制在边界内。

下面我发布我的精灵如何设置的截图。以及如何将它们放入层次结构中。

  • 边境精灵 - 这个精灵的宽度现在是70像素,因为这是给我的方式。

enter image description here

  • 层次结构,位置,比例和旋转中的边框是默认值。然后,例如,在y轴上移动BorderTop 25以将其移动到屏幕顶部。

enter image description here

  • 相机设置 enter image description here

示例分辨率和当前输出

  • 16:9 List item
  • 5:4 enter image description here

3 个答案:

答案 0 :(得分:0)

为每个边框添加一个简单的脚本:

public class Border : MonoBehaviour {

    enum BorderTypes
    {
        bottom, top, left, right
    }

    [SerializeField] float borderOffset = 0.1f;
    [SerializeField] BorderTypes type = BorderTypes.top;

    // Use this for initialization
    void Start () {
        switch (type)
        {
            case BorderTypes.bottom:
                transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, borderOffset, 10));
                break;
            case BorderTypes.top:
                transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 1 - borderOffset, 10));
                break;
            case BorderTypes.left:
                transform.position = Camera.main.ViewportToWorldPoint(new Vector3(borderOffset, 0.5f, 10));
                break;
            case BorderTypes.right:
                transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1 - borderOffset, 0.5f, 10));
                break;
            default:
                break;
        }
    }
}

答案 1 :(得分:0)

您可以使用一种简单的方法:

  • 首先,创建一个画布
  • 在Inspector的“画布”组件中,将Render Mode设置为Screen Space - Camera,然后将主摄像机拖到Render Camera字段。

    enter image description here

  • 然后,在Inspector窗口的Canvas Scaler组件中,将UI Scale Mode设置为Scale Width Screen Size并设置其他设置,例如此图像

    enter image description here

  • 现在将您的游戏对象拖到画布上。

    enter image description here

答案 2 :(得分:0)

首先,您不应该更改精灵。您的问题是游戏视口。您根本无法在“全屏”中的每个设备上都具有16:9的固定长宽比。您在这里有2个选项:

  1. 无需关心宽高比和调整游戏玩法,可以使画布缩放器模式“根据屏幕大小缩放”并参考分辨率,例如1920x1080或1600:900或800:450。您的游戏逻辑必须考虑到屏幕的大小可能不同。您可以通过在游戏视图中切换不同的宽高比来在编辑器中进行实验。
  2. 保持16:9,并在初始化游戏时计算在何处添加“横杠”(侧面或上下)。