在具有本机大小的Container中显示加载的UI图像

时间:2018-06-13 17:46:45

标签: unity3d

我希望以宽高比显示UI徽标图像,但其大小适合其容器。已经是所有徽标图像按照宽高比,但很少与需求相比太大或太小。

目前发生了这样的事情: enter image description here

以下是我正在使用的代码:

private void ShowGamePlayLogoViewed ()
{
    for (int i = 0; i < DataCollection.companyDetailsList.Count; i++) {
        Company company = DataCollection.companyDetailsList [i];
        if (company.ViewedCounter > 0) {
            GameObject companyItemObj = Instantiate (companyItemPref, gridViewContainer) as GameObject;
            CompanyItem companyItem = companyItemObj.GetComponent<CompanyItem> ();
            companyItem.companyId = company.CompanyId;
            companyItem.UpdateCompanyLogo (company.CompanyLogo);
            companyItem.UpdateCompanyName (company.CompanyName);
        }
    }
}
public void UpdateCompanyLogo (Sprite logoSprite)
{
    logoImage.sprite = logoSprite;
    logoImage.SetNativeSize ();
}

根据您的意见,徽标与容器重叠。我也希望在宽高比上也能在各自的容器中正确显示它们。

请给我一些帮助,以便我可以像这样设置属性。让我更清楚一点,从Web服务器加载所有徽标,它们都是动态的,基于它将出现在移动屏幕上的服务器数据。

1 个答案:

答案 0 :(得分:0)

我通过Unity论坛找到了解决方案,我想感谢@Hosnkobf的回复。

以下是对我有用的确切答复:

调整单位内的图像游戏对象,使其具有您正在寻找的高度。还可以调整锚点,使其以不同的分辨率正确缩放。 添加&#34; AspectRatioFitter&#34;组件到对象。制作它&#34;高度控制宽度&#34;。 而不是logoImage.SetNativeSize();执行以下操作:

float aspectRatio = logoSprite.rect.width / logoSprite.rect.height;
var fitter = logoImage.GetComponent<UnityEngine.UI.AspectRatioFitter>();
fitter.aspectRatio = aspectRatio;

我希望这对其他成员有用:)