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

7 篇文章 0 订阅
7 篇文章 1 订阅

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

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值