Unity 3D通过Image的固定高度计算图片(Sprite)放大或缩小后的宽度

本文介绍了如何在Unity3D中使用C#脚本来实现Image组件的Sprite图片根据固定高度动态计算并调整宽度。通过获取RectTransform的大小和Sprite的bounds信息,计算放大或缩小比例,从而实现图片的适配。代码示例详细展示了Width()方法的实现,同时也提供了Height()方法的注释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity 3D通过Image的固定高度计算图片(Sprite)放大或缩小后的宽度

原图片分辨率是480*320请添加图片描述
计算之前

在这里插入图片描述计算之后
在这里插入图片描述代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    [Header("Image(UI组件)")]
    public Image image;
    [Header("资源图片")]
    public Sprite sprite;
    void Start()
    {
        Width();
        //Height();
    }
    /// <summary>
    /// 通过固定高度计算宽度
    /// </summary>
    void Width()
    {
        //计算图片(sprite)的放大或者缩小的比例   x是宽度,y是高度
        float h = image.GetComponent<RectTransform>().sizeDelta.y / sprite.bounds.size.y;
        //计算出放大或者缩小后的宽度
        float w = sprite.bounds.size.x * h;
        //把计算好的宽度赋值给Image
        image.GetComponent<RectTransform>().sizeDelta = new Vector2(w, image.GetComponent<RectTransform>().sizeDelta.y);
        //把图片赋值给Image
        image.sprite = sprite;
    }
    /// <summary>
    /// 通过固定宽度计算高度
    /// </summary>
    void Height()
    {
        //计算图片(sprite)的放大或者缩小的比例   x是宽度,y是高度
        float w = image.GetComponent<RectTransform>().sizeDelta.x / sprite.bounds.size.x;
        //计算出放大或者缩小后的宽度
        float h = sprite.bounds.size.y * w;
        //把计算好的宽度赋值给Image
        image.GetComponent<RectTransform>().sizeDelta = new Vector2(image.GetComponent<RectTransform>().sizeDelta.x, h);
        //把图片赋值给Image
        image.sprite = sprite;
    }
}


脚本挂在哪都一样变量赋值对了就行
在这里插入图片描述
image.GetComponent().sizeDelta.y 是Image的Heighe
image.GetComponent().sizeDelta.x 是Image的Width

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值