2016-02-11 5 views
0

В настоящее время я загружаю изображения во время выполнения из каталогов, хранящихся в XML-файле, и назначая их компонентам RawImage через WWW-класс. Хотя это работает нормально, изображение искажено, чтобы вписаться в новый размер текстуры.Поиск размера изображений, импортированных во время выполнения

Мне интересно, как получить исходный размер или соотношение сторон изображения, чтобы я мог изменить размер изображения в соответствии с требованиями. Изображения, которые нужно импортировать, имеют разные размеры, и поэтому используемый подход должен реагировать на исходный размер импортированных изображений.

Любые предложения были бы очень признательны. [Scripting в 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; 
} 
+1

Можете ли вы использовать переключатель пропорций сохранения? – Everts

+0

НЕ используйте «unityscript», он устарел. Перейдите на C#. – Fattie

+0

Возможный дубликат [Получение ширины объекта 2d в единстве 3d] (http://stackoverflow.com/questions/22060614/getting-width-of-2d-object-in-unity-3d) – Fattie

ответ

0

Если вы не можете использовать изображения (для NAY уважительных причин), вы можете получить ширину и высоту текстуры:

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. Результат не обязательно будет таким же, поскольку он сохранит размеры коробки и заставит Sprite занимать столько места, сохраняя соотношение.

Смежные вопросы