Unity 中如何在竖屏模式的 UI 之上显示强制横屏的 UI?
我们现在有两种思路:
- 改 Screen.orientation 之后再显示。
- 需要考虑外层 RectTransform 是否已经“完成”了转屏导致的变化,然后才能去适配内层。尚未找到可靠的事件。
- 需要处理背景,半透明背景可能透出后面的 UI 排版混乱。
- 将新 UI 旋转依 z 轴转 -90度显示。
- 对刘海屏的适配需要做相应的修改。
- 无法转屏(因为还是竖屏,且不支持 Upside Down)。但是这个应该可以克服。 请问,两者哪种更好呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
有没有更“正经”的方法~
那不就自适应不了了么
在Canvas上根据你自己的需求做好自适应就好啦
记不太清了,印象中没有遇到什么大问题。不过我们当时这类需求切换时都是全屏UI, 加了遮罩fade后没有什么明显的穿帮
我们之前项目里刚好有个类似的需求,在横屏游戏中,个别玩法切换到竖屏。
当时采用的解决方案是修改Screen.orientation,同时修改UI全局根节点上的CanvasScale的referenceResolution(竖屏时设置为1080, 1920,横屏设置为1920,1080) ,matchWidthOrHeight(和项目的适配策略相关,竖屏时设置为0,横屏时为1),切换时会有一个全屏遮罩的fade效果,来避免切换时显示错误。
你是不想分多Canvas么
另外,recttransform 的尺寸会被延迟修改这件事, 没有造成什么问题么?
一个简单粗暴的方式
Canvas的RenderMode改成World Space,管它摄像机怎么裁剪,UI画布也不会发生变化(狗头)
好的谢谢了
我们当时没有测过旋转的方案。现在大概想想有两个问题,不知道想的对不对。1. 单纯旋转角度应该只能在横屏的中间部分显示一个竖屏界面吧?感觉还需要其他处理。2. 对工作流是否有影响,如果要一个竖屏界面是否是要在制作时先做成一个横屏界面?内部控件是否要处理?例如最终呈现出竖屏效果的剧情文字从左到右出现的话,旋转之前应该是横屏的从下到上出现,同时每个单一文字也是旋转的。
感谢回答,请问为什么不考虑转 90 度的做法?