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

Bai*_*ler 5 scaling image sprite unity-game-engine

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

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

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

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

在此输入图像描述

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

在此输入图像描述

  • 相机设置 在此输入图像描述

示例分辨率和当前输出

  • 16:9 项目清单
  • 5:4 在此输入图像描述

小智 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)