Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Image 查找运行时导入的图像的大小_Image_Unity3d_Runtime_Unityscript_Dimensions - Fatal编程技术网

Image 查找运行时导入的图像的大小

Image 查找运行时导入的图像的大小,image,unity3d,runtime,unityscript,dimensions,Image,Unity3d,Runtime,Unityscript,Dimensions,我目前正在运行时从存储在XML文件中的目录加载图像,并通过WWW类将它们分配给RawImage组件。虽然这工作正常,但图像会倾斜以适应新的纹理大小 我想知道如何获得图像的原始大小或纵横比,以便我可以改变图像的大小,以适应矩形。要导入的图像大小不一,因此使用的方法需要响应导入图像的原始大小 如有任何建议,将不胜感激。[用uJS编写脚本] 谢谢你,瑞安 function loadContextImage(texLocation : String) { if (!imageView.activ

我目前正在运行时从存储在XML文件中的目录加载图像,并通过WWW类将它们分配给RawImage组件。虽然这工作正常,但图像会倾斜以适应新的纹理大小

我想知道如何获得图像的原始大小或纵横比,以便我可以改变图像的大小,以适应矩形。要导入的图像大小不一,因此使用的方法需要响应导入图像的原始大小

如有任何建议,将不胜感激。[用uJS编写脚本]

谢谢你,瑞安

function loadContextImage(texLocation : String)
{
    if (!imageView.activeSelf)
    {
        imageView.SetActive(true);
    }

    var wwwDirectory = "file://" + texLocation; //this will probably need to change for other OS (PC = file:/ [I think?]) - **REVISE**  
    var newImgTex = new Texture2D(512, 512);

    while(true){

        var www : WWW = new WWW(wwwDirectory);

        yield www;

        www.LoadImageIntoTexture(newImgTex);

        if (www.isDone){
            break; //if done downloading image break loop
        }
    }

    var imageRender : UI.RawImage = imageView.GetComponent.<RawImage>();
    imageRender.texture = newImgTex;
}
函数loadContextImage(texLocation:String)
{
如果(!imageView.activeSelf)
{
imageView.SetActive(true);
}
var wwwDirectory=“file://”+texLocation;//这可能需要对其他操作系统进行更改(PC=file://[我想?])-**修订**
var newImgTex=新纹理2d(512);
while(true){
var www:www=new www(wwwDirectory);
产生www;
www.LoadImageIntoTexture(newImgTex);
国际单项体育联合会(www.isDone){
break;//如果下载完图像,则中断循环
}
}
var imageRender:UI.RawImage=imageView.GetComponent.();
imageRender.texture=newImgTex;
}

如果您无法使用图像(出于任何正当理由),您可以获得纹理的宽度和高度:

WWW www = new WWW(url);
yield return www;
Texture2D tex = www.texture; 
float aspectRatio = tex.height / tex.width;
rawImage.width = width;
rawImage.height = width * aspectRatio;
这应该使图像的矩形具有适当的纹理比例


如果您可以使用Image和preserveAspectRatio,那么您可以通过Unity来完成。结果不一定相同,因为它将保持长方体的尺寸,并使精灵在保持比例的同时占据同样多的空间

如果您无法使用图像(出于任何正当理由),您可以获得纹理的宽度和高度:

WWW www = new WWW(url);
yield return www;
Texture2D tex = www.texture; 
float aspectRatio = tex.height / tex.width;
rawImage.width = width;
rawImage.height = width * aspectRatio;
这应该使图像的矩形具有适当的纹理比例


如果您可以使用Image和preserveAspectRatio,那么您可以通过Unity来完成。结果不一定相同,因为它将保持长方体的尺寸,并使精灵在保持比例的同时占据同样多的空间

可以使用“保留纵横比”开关吗?不要使用“unityscript”,它已被弃用。更改为c#。可能是@fafase的副本RawImage类中似乎没有保存纵横比的方法;你指的还有其他方法吗?@Joe Blow谢谢你的提示;我在这个阶段非常投入地使用uJS,但在未来的项目中肯定会使用c。您包含的重复链接似乎是指使用边界来获取标注尺寸。我认为这不适合我的使用情况,因为图像是在运行时导入的,我需要在将其分配给renderer.texture之前找到图像本身的尺寸,以确保纹理设置为适当的大小,并避免前面提到的不正确的纵横比。能否使用“保留纵横比”切换?不要使用“unityscript”,它已被弃用。更改为c#。可能是@fafase的副本RawImage类中似乎没有保存纵横比的方法;你指的还有其他方法吗?@Joe Blow谢谢你的提示;我在这个阶段非常投入地使用uJS,但在未来的项目中肯定会使用c。您包含的重复链接似乎是指使用边界来获取标注尺寸。我认为这不适合我的使用情况,因为图像是在运行时导入的,我需要在将其指定给renderer.texture之前找到图像本身的尺寸,以确保纹理设置为适当的大小,并避免前面提到的不正确的纵横比。