Автор Тема: Texture  (Прочитано 1845 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Октябрь 03, 2012, 09:17:14 am
Прочитано 1845 раз

WinSTOP

  • Частный гость

  • Оффлайн
  • ***

  • 123
  • Репутация:
    3
    • Просмотр профиля
Вот начал изучать GUI потихоньку... Хочу отобразить текстуру, но так и не нашёл информацию об этом..
Вот код который я нашёл в инете:
windowPosition.x = int.Parse(GUI.TextField(Rect (100, 10, 40, 20), ""+windowPosition.x, 3));Вот, что у меня получилось:
var TexD: Texture;

var windowPosition:Vector2=Vector2(200,200);
var windowSize:Vector2=Vector2(96.0,96.0);

function OnGUI()
{
  windowPosition.x = int.Parse(GUI.TextField(Rect (100, 10, 40, 20), ""+windowPosition.x, 3));
  windowPosition.y = int.Parse(GUI.TextField(Rect (100, 30, 40, 20), ""+windowPosition.y, 3));
  windowSize.x = int.Parse(GUI.TextField(Rect (100, 50, 40, 20), ""+windowSize.x, 3));
  windowSize.y = int.Parse(GUI.TextField(Rect (100, 70, 40, 20), ""+windowSize.y, 3));
 
  GUI.DrawTexture(Rect(windowPosition.x,windowPosition.y,windowSize.x,windowSize.y),TexD,ScaleMode.StretchToFill);

}
Всё как бы работает, но потом захотелось убрать отображаемые координаты на экране..
вот тут я и запутался, что нужно удалить, что бы не отображались на экране цифры позиции Texture?
или мож кто знает поменьше способ, отображения текстуры и изменения её позиции, размеры?

Октябрь 03, 2012, 09:36:49 am
Ответ #1

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
""+windowPosition.x
 - когда переменную складывают со строкой (в данном случае пустая строка в кавычках), это преобразует содержимое переменной в текстовую строку. Она у тебя и выводится.
И вообще ты что-то там накрутил умопомрачительное...

Октябрь 03, 2012, 09:49:10 am
Ответ #2

WinSTOP

  • Частный гость

  • Оффлайн
  • ***

  • 123
  • Репутация:
    3
    • Просмотр профиля
я эту строчку пытался удалить, но у меня выходило много ошибок.
Щас в инете ищу полегче способ, этот мне точно не подходит.

Октябрь 03, 2012, 10:00:41 am
Ответ #3

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
У меня вполне этого хватает, чтоб загруженая текстура отображалась: (на С#)
TexD: Texture;

function OnGUI()
{
  GUI.DrawTexture(new Rect(500, 200, 40, 50),TexD,ScaleMode.StretchToFill);
}


Rect(500, 200, 40, 50) - задаёт положение и размеры текстуре (x, y, w, h)











Октябрь 03, 2012, 10:11:43 am
Ответ #4

WinSTOP

  • Частный гость

  • Оффлайн
  • ***

  • 123
  • Репутация:
    3
    • Просмотр профиля
блин как же это было всё легко =)

Цитировать
Rect(500, 200, 40, 50) - задаёт положение и размеры текстуре (x, y, w, h)
Я пользуюсь маленько другим способом

var label : Rect;

GUI.DrawTexture(Rect(label),Tex,ScaleMode.StretchToFill);
« Последнее редактирование: Октябрь 03, 2012, 10:13:46 am от WinSTOP »

Октябрь 03, 2012, 10:25:47 am
Ответ #5

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
Я пользуюсь маленько другим способом

var label : Rect;

GUI.DrawTexture(Rect(label),Tex,ScaleMode.StretchToFill);

ну тут ты просто заранее объявляешь переменную с именем label, и типом Rect, что и означает тот же самый Rect(x, y, w, h)

http://docs.unity3d.com/Documentation/ScriptReference/GUI.DrawTexture.html

Октябрь 03, 2012, 13:17:44 pm
Ответ #6

WinSTOP

  • Частный гость

  • Оффлайн
  • ***

  • 123
  • Репутация:
    3
    • Просмотр профиля
Тоже самое, но мой способ более удобен)

Октябрь 03, 2012, 20:56:16 pm
Ответ #7

pax

  • Новичок

  • Оффлайн
  • *

  • 7
  • Репутация:
    8
    • Просмотр профиля
    • Blitz3d to Unity Wiki Project
GUI.DrawTexture(Rect(label),Tex,ScaleMode.StretchToFill);

тут создание лишнего ректа на основе label, можно этого не делать
GUI.DrawTexture(label,Tex,ScaleMode.StretchToFill);