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