Files
5.24BuYu/Assets/MyGame/aa/UI/Game/Sub/TuJianItem.cs
T
2026-06-21 18:20:55 +08:00

74 lines
2.5 KiB
C#

using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TuJianItem : MonoBehaviour
{
public Image sprite_image;
public TextMeshProUGUI tMP_nameText;
public TextMeshProUGUI tMP_Mult;
public RoomFishDetailConfig roomFishDetailConfig;
Button btn_This;
private void Awake()
{
btn_This = GetComponent<Button>();
}
public void InItItem(RoomFishDetailConfig roomFishDetail,bool isGuDingBeiShu=true)
{
roomFishDetailConfig = roomFishDetail;
if (FishResourcesData.fishResourcesSpritesDic.ContainsKey(int.Parse(roomFishDetailConfig.fishNumber)))
{
sprite_image.sprite = FishResourcesData.fishResourcesSpritesDic[int.Parse(roomFishDetailConfig.fishNumber)];
}
// 图片等比例缩放,填满 Image 的宽高中较小的那条边
FitImageToBounds();
tMP_nameText.text = GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishName;
if (isGuDingBeiShu)
{
tMP_Mult.text = $"{GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishScore}倍";
}
else
{
tMP_Mult.text = $"最高{GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishScore}倍";
}
}
private void FitImageToBounds()
{
if (sprite_image == null || sprite_image.sprite == null) return;
var rect = sprite_image.rectTransform;
var spriteTex = sprite_image.sprite.texture;
if (spriteTex == null) return;
// 用 rect(实际渲染大小)作为容器宽高
float imgW = rect.rect.width;
float imgH = rect.rect.height;
float spriteW = spriteTex.width;
float spriteH = spriteTex.height;
if (spriteW <= 0 || spriteH <= 0 || imgW <= 0 || imgH <= 0) return;
float scale = Mathf.Min(imgW / spriteW, imgH / spriteH);
float newW = spriteW * scale;
float newH = spriteH * scale;
// 四个边分离的锚点:通过 offsetMin/offsetMax 设置宽高
// 保持中心不变
float centerX = (rect.offsetMin.x + rect.offsetMax.x) * 0.5f;
float centerY = (rect.offsetMin.y + rect.offsetMax.y) * 0.5f;
float halfW = newW * 0.5f;
float halfH = newH * 0.5f;
rect.offsetMin = new Vector2(centerX - halfW, centerY - halfH);
rect.offsetMax = new Vector2(centerX + halfW, centerY + halfH);
}
}