Unity 图片等比例自适应缩放

    private Vector2 ResetSize(float _width, float _height, float screenWidth = 1920, float screenHeight = 1080)
    {
   
   
        float tempWidth;
        float tempHeight;
        if 
### 实现 Unity UI Image 基于高度自动调整 为了使 `Image` 组件基于其内容的高度自动调整,在设置中应关注几个关键属性。对于 `RectTransform` 的尺寸适配,可以利用 `AspectRatio Fitter` 和 `Content Size Fitter` 来达成目标。 当希望图像根据其内部布局或子对象的内容来调整自身的大小时,`ContentSizeFitter` 是非常有用的工具之一[^1]。具体来说: - **Vertical Fit 设置为 PreferredSize**:这会让组件尝试将其垂直方向上的尺寸匹配到它所包含的内容所需的首选尺寸。 要让图片按照特定的比例保持不变并仅依据高度变化而缩放,则需应用 `AspectRatioFitter` 并配置如下参数: - **Aspect Mode 设定为 "Height Controls Width"**:这意味着一旦设置了控件的高度之后, 宽度将会随之改变以维持指定的纵横比[^2]. 下面是一个具体的例子展示如何组合这两个组件实现所需效果: ```csharp using UnityEngine; using UnityEngine.UI; public class AutoResizeImage : MonoBehaviour { private void Start() { // 获取当前脚本附加的对象中的 Image 组件. var img = GetComponent<Image>(); // 创建 ContentSizeFitter 并设定 vertical fit 为 preferred size, // 这样可以让该元素根据内容动态调整自己的高度. var contentSizer = gameObject.AddComponent<ContentSizeFitter>(); contentSizer.verticalFit = ContentSizeFitter.FitMode.PreferredSize; // 添加 AspectRatioFitter 到 GameObject 上, // 使用 HeightControlsWidth 模式确保宽度随高度的变化而相应调整. var aspectRatioFitter = gameObject.AddComponent<AspectRatioFitter>(); aspectRatioFitter.aspectMode = AspectRatioFitter.AspectMode.HeightControlsWidth; float desiredAspectRatio = 1f; // 此处可以根据实际需求修改为你想要的具体比例值 aspectRatioFitter.aspectRatio = desiredAspectRatio; } } ``` 此代码片段展示了怎样通过编程方式向一个 `GameObject` 中添加必要的组件 (`ContentSizeFitter`, `AspectRatioFitter`) 及相应的配置,从而使得关联的 `Image` 能够根据其内容的高度来自适应地调整整个图形的大小,并始终保持固定的宽高比.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呼呼突突

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值