1

我正在尝试制作一个脚本,在设备旋转时调整 Canvas 的 SafeArea。我已经让它几乎可以工作了,它在启动时看起来很棒,但是旋转后我得到了一个我无法理解的奇怪结果:SafeArea 根据应用程序是以纵向模式还是横向模式启动而有所不同。

Screen.safeArea例如,当我在 iPhone 12 Pro 上注销 的值时,我得到以下值:

  • 发射时的纵向:(x:0.00, y:102.00, width:1170.00, height:2289.00)
  • 纵向旋转为横向:(x:0.00,y:102.00,宽度:2532.00,高度:927.00)
  • 发射时的横向:(x:141.00,y:63.00,宽度:2250.00,高度:1107.00)
  • 横向旋转为纵向:(x:141.00,y:63.00,宽度:888.00,高度:2469.00)

宽度/高度值在旋转时会发生变化,这是有道理的,但 X/Y 偏移不会。鉴于 iPhone 12 的特殊性质,这意味着当以纵向启动并旋转到横向时,顶部有一个很大的空白区域,但会溢出到侧面的凹槽,而当以横向启动并旋转到时,两侧会有很大的空白空间肖像但溢出缺口到顶部。

这是预期的行为吗?我会认为“纵向启动”和“旋转到纵向”安全区域应该是一样的,对吧?有没有办法强制刷新安全区域或其他东西,以获得正确的 X/Y 值?还是我误解了这应该如何工作?

4

1 回答 1

1

正如我在评论中提到的,我相信这是您使用的 Unity 版本中的一个错误。不过好消息!据this bug report,它已被修复2020.1.X, 2018.4.X and 2019.3.X。如果您已经在其中一个版本中,则可能是该错误已返回。如果是这种情况,我会尝试列出的替代版本之一。如果没有列出的版本工作,您应该报告错误已经回归。

于 2021-09-23T20:50:12.653 回答