Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 在容器中以本机大小显示加载的UI图像_Unity3d - Fatal编程技术网

Unity3d 在容器中以本机大小显示加载的UI图像

Unity3d 在容器中以本机大小显示加载的UI图像,unity3d,Unity3d,我想显示用户界面标志图像的纵横比,但在适当的大小,适合其容器。已经按照纵横比列出了所有徽标图像,但与要求相比,很少有太大或太小的 目前正在发生这样的事情: 以下是我正在使用的代码: private void ShowGamePlayLogoViewed () { for (int i = 0; i < DataCollection.companyDetailsList.Count; i++) { Company company = DataCollection.c

我想显示用户界面标志图像的纵横比,但在适当的大小,适合其容器。已经按照纵横比列出了所有徽标图像,但与要求相比,很少有太大或太小的

目前正在发生这样的事情:

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

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 ();
}
private void ShowGamePlayLogoViewed()
{
对于(int i=0;i0){
GameObject companyItemObj=实例化(CompanyItemRef,gridViewContainer)为GameObject;
CompanyItem CompanyItem=companyItemObj.GetComponent();
companyItem.companyId=company.companyId;
companyItem.UpdateCompanyLogo(company.CompanyLogo);
companyItem.UpdateCompanyName(company.CompanyName);
}
}
}
public void UpdateCompanyLogo(精灵logoSprite)
{
logoImage.sprite=logosrite;
logoImage.SetNativeSize();
}
正如您所看到的,标识与容器重叠。我想把它们正确地显示在各自的容器中,也要显示在纵横比中


让我再澄清一件事:从web服务器加载的所有徽标,它们都是动态的,基于服务器数据,它们将出现在移动屏幕上。

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

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

调整unity内的图像游戏对象,使其具有所需的高度。同时调整定位点,使其以不同的分辨率正确缩放。 将“AspectRatioFilter”组件添加到对象。使其成为“高度控制宽度”。 而不是logoImage.SetNativeSize();请执行以下操作:

float aspectRatio = logoSprite.rect.width / logoSprite.rect.height;
var fitter = logoImage.GetComponent<UnityEngine.UI.AspectRatioFitter>();
fitter.aspectRatio = aspectRatio;
float aspectRatio=logosrite.rect.width/logosrite.rect.height;
var fitter=logoImage.GetComponent();
fitter.aspectRatio=aspectRatio;
我希望这对其他成员有用:)