【问题标题】:Unity-3d-5 Scale images for 16:9 to other resolutionsUnity-3d-5 将 16:9 的图像缩放到其他分辨率
【发布时间】:2016-10-03 17:00:51
【问题描述】:

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

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

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

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

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

  • 相机设置

分辨率和电流输出示例

  • 16:9
  • 5:4

【问题讨论】:

    标签: image unity3d sprite scaling


    【解决方案1】:

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

    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;
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以用一个简单的方法:

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

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

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

      【讨论】:

        【解决方案3】:

        首先,你不应该改变你的精灵。你的问题是游戏视口。你根本不可能在“全屏”的每台设备上都有 16:9 的固定纵横比。你有两个选择:

        1. 不要关心纵横比并调整您的游戏玩法,将您的画布缩放模式设置为“随屏幕大小缩放”并参考分辨率为 1920x1080 或 1600:900 或 800:450。您的游戏逻辑必须考虑到您可能有不同大小的屏幕。您可以通过在游戏视图中切换不同的纵横比在编辑器中进行试验。
        2. 保持 16:9,因此在游戏初始化时计算添加“条”的位置(边或上下)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多