【问题标题】:Unity Scaling for all Aspect Ratios for all Android mobile devices适用于所有 Android 移动设备的所有纵横比的 Unity 缩放
【发布时间】:2019-04-22 18:18:51
【问题描述】:

我是 Unity 新手,遇到了这个“问题”。

我正在尝试制作一个始终处于纵向模式的简单 2D 手机游戏(目前为 Android),但我无法在所有不同的屏幕尺寸下获得相同的结果。

问题是当我试图让屏幕在所有不同的屏幕尺寸下均等缩放时,但我得到的是上下或左右的背景截止(我知道这与 @987654321 @) 当我尝试更改屏幕尺寸时。

所以我在 Canvas Scaler 中使用的是:Scale With Screen Size,参考分辨率为X:1080 Y:1920,背景图像大小为 1080x1920。

当我尝试调整到更大的屏幕分辨率(例如 1080 x 2160)时:

  • 使用Shrink背景被截断

  • 使用 Expand 我得到“黑条”。

  • 使用Match Width Or HeightMatch: 1,我得到“黑条”或Match: 0,背景在两侧被截断。

或者,当调整到较小的比例 (3:4) 时,我会在两侧看到黑条或背景截止。

所有 16:9(576x1024、720x1280、1080x1920、1440x2560 等)似乎都是正确的。

所以我的问题是,我可以通过哪种方式支持所有不同的移动屏幕尺寸,包括所有不同的纵横比,而不会导致背景被截断或两侧出现黑条?

提前致谢。

【问题讨论】:

    标签: c# android unity3d scaling


    【解决方案1】:

    问题是您的画布缩放器确实可以缩放到屏幕大小,但您的背景却没有。背景图片大小固定为1080x1920。

    我认为进行这种缩放(拉伸)的最简单方法是将图像设置为填充父对象(画布对象)。

    为此,您可以将背景图像的锚点设置为这些值。喜欢这个Post

    Anchors
    
        Min  X 0 Y 0
    
        Max  X 1 Y 1
    

    或者只是使用锚预设来设置这些值。

    您可以从here获取更多关于锚点的信息。

    但就像@remy_rm 所说,这种方法会拉伸你的背景图片。

    【讨论】:

    • 您的回答帮助我通过使用 Anchors Min 0,0 和 Max 1,1 来改进我的结果。现在确实背景被拉伸而没有黑条或截止。谢谢。
    【解决方案2】:

    图像出现黑条/截断是由于使用aspect ratio fitter,图像试图保持其纵横比。

    它适用于 576x1024、720x1280、1440x2560 等,因为纵横比与原始图像(或画布,即 1080x1920)相同,纵横比为 9:16。

    如果您不想让黑条或图像的一部分被截断,则需要将图像拉伸/裁剪为新的纵横比(例如,如果您想要 1080x2160,纵横比为 1:2)

    要做到这一点,您需要删除宽高比调整器,并确保在您的图像组件上勾选preserve aspect。然后使图像始终填充画布/屏幕大小。例如,将游戏对象background 作为画布的子对象,将image 组件添加到background 并将变换的widthheight 设置为与Screen.currentResolution 相同(来自Screen 类)

    但是,这会将您的图像拉伸到不适合纵横比的方向(如果您的原始图像是 9:16 (1080x1920) 并且您希望它显示 2:1 (2160x1920)),它将拉伸到它在 x 轴上的大小是它的两倍,从而导致图像扭曲且大多丑陋)。为了解决这个问题,您可能需要为非标准纵横比制作单独的图像,或者制作拉伸时看起来不错的图像。

    【讨论】:

    • 感谢您的详细解答!它帮助我更多地了解纵横比。我已经尝试过使用 1080x2160,但仍然在不同的纵横比下再次出现黑条和截止。你能解释一下你说的最后一部分“为了解决这个问题,你可能想要为非标准纵横比制作单独的图像,或者制作拉伸时看起来不错的图像。”
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多