unity3d - Unity UI:在显示器上拉伸图像
问题描述
我有一个位于 Canvas 元素中的图像(游戏战略地图),我希望它延伸到显示器的整个宽度或长度(在不同的设备上可能具有不同的尺寸或纵横比),以便图像被保留,同时所有图像都可见。
无论我设置什么,图像要么太小,要么太大而无法放入显示器。
如果我理解正确,两组设置很重要:(1)图像的位置,它的枢轴,它的锚点,它的最小和最大 x 和 y。(2)父canvas scaler UI缩放模式(我可能需要“随屏幕大小缩放”),它的x和y滑动缩放。我忽略了什么吗?因为似乎没有任何组合对我有用。
第二个问题:我需要在最大化模式下玩它才能测试它吗?或者它是否应该在非最大化模式下工作?
解决方案
以下是从头开始实现您想要的目标的步骤:
- 为简单起见,将游戏视图的分辨率设置为您正在开发的主要分辨率。现在我们将使用 1920x1080。
- 将画布添加到场景中。
- 配置画布设置:
- 渲染模式:屏幕空间叠加
- UI缩放模式:随屏幕大小缩放
- 屏幕匹配模式:展开
- 参考分辨率:1920x1080(与游戏视图相同)。
- 添加图像作为画布的子对象,并将所需的精灵添加到图像中。
- 拖动图像以您希望的方式显示并将其锚定到中心。
此时,您应该能够在游戏视图中切换到其他分辨率(例如,iPad 为 2048x1536,Note 8 为 2960x1440),并且图像应该在不影响其纵横比的情况下进行拉伸。根据您想要做什么,您可能需要使用屏幕匹配模式。
注意:事后更改画布参考分辨率可能需要重新配置或缩放 UI。
推荐阅读
- ember.js - Ember、PostCSS、SASS 和 @apply 的问题
- swift - 不受支持的架构 - Metal 和 Swift 之间的共享枚举
- java - 无法为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象设置未知属性“nav_version”
- laravel - 带模型和变量的路由
- c - 控件不流过第 45 行
- angular - ReferenceError:未定义 HTMLVideoElement
- sql - 如何更改具有 3600 万行的临时表以添加新列?
- ibm-cloud - 语音识别、批处理、语音分析、404【无此类子资源】
- reactjs - 做出反应。如何在组件树中调用特定子子项的方法
- php - 如何在 Codeigniter 4 中为所有页面设置特定语言