74 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|