GUI из скрипта

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

GUI из скрипта

Сообщение shkeep 26 авг 2013, 14:08

Кнопка, созданная в скрипте такой строкой:

if (GUI.Button(Rect (6,6,50,50), icon)) {

не появилась в иерархии. Подскажите, пожалуйста, как ей присвоить имя и скрипт с обработкой. И возможно ли вообще это для программно созданных объектов.
по справочнику убил неделю, ответ не нашел. Заранее спасибо.
shkeep
UNец
 
Сообщения: 5
Зарегистрирован: 26 авг 2013, 13:10

Re: GUI из скрипта

Сообщение nile 26 авг 2013, 14:33

 Кнопка стандартного гуя не является геометрическим объектом.
а обработчик прост:
Синтаксис:
Используется csharp
if (GUI.Button(Rect (6,6,50,50), icon)) {
 //что происходит при нажатии 
}
 


http://docs.unity3d.com/Documentation/S ... utton.html

И не забывайте про ScriptReference  , там полно примеров.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: GUI из скрипта

Сообщение porcha 26 авг 2013, 14:42

И возможно ли вообще это для программно созданных объектов.
Я так понял для уже созданных объектов вроде GameObject? То тогда нет, только уже через OnMouseDown()
GameDev Проект
porcha
UNITрон
 
Сообщения: 188
Зарегистрирован: 28 мар 2013, 19:47

Re: GUI из скрипта

Сообщение nile 26 авг 2013, 14:46

Должен быть создан хотя бы один GameObject , на котором  должен висеть monobehaviour  скрипт с методом  OnGui() 
В теле этого метода и описывается все, что связано с гуем, в частности эта кнопка.
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: GUI из скрипта

Сообщение shkeep 26 авг 2013, 14:53

в том-то и проблема - вложенный в условие блок не выполняется по нажатию. вложенное меню не появляется
if (GUI.Button(Rect (6,6,50,50), icon)) {
GUI.Box (Rect (55,10,90,85), "User Menu");
if (GUI.Button (Rect (60,35,80,15), "Person")) {

....
}
}
shkeep
UNец
 
Сообщения: 5
Зарегистрирован: 26 авг 2013, 13:10

Re: GUI из скрипта

Сообщение shkeep 26 авг 2013, 14:56

OnMouseDown() не к чему прицепить в данном случае
shkeep
UNец
 
Сообщения: 5
Зарегистрирован: 26 авг 2013, 13:10

Re: GUI из скрипта

Сообщение nile 26 авг 2013, 15:08

 Если я правильно понял:

Синтаксис:
Используется csharp

bool BlockEnable = false;

void OnGui()
{
if (GUI.Button(Rect (6,6,50,50), icon))  BlockEnable = !BlockEnable;


if (BlockEnable){
       GUI.Box (Rect (55,10,90,85), "User Menu");
       if (GUI.Button (Rect (60,35,80,15), "Person")) {
              ....
              }
}
}
}
 
Аватара пользователя
nile
Старожил
 
Сообщения: 848
Зарегистрирован: 25 фев 2011, 17:17

Re: GUI из скрипта

Сообщение shkeep 26 авг 2013, 15:20

function OnGUI () {
if (GUI.Button(Rect (10,10,50,50), icon)) {
print ("Вы нажали кнопку!"); // срабатывает по нажатию
GUI.Box (Rect (50,10,100,85), "User Menu"); // не работает!
if (GUI.Button (Rect (60,35,80,15), "Level 1")) {
// ....
}
// ....
}
}

Не могу понять, где ошибка или какова причина.
shkeep
UNец
 
Сообщения: 5
Зарегистрирован: 26 авг 2013, 13:10

Re: GUI из скрипта

Сообщение 2rusbekov 26 авг 2013, 15:39

Событие нажатия работает долю кадра, и вы не успеваете увидеть бокс. Гуи обновляется каждый ивент, несколько раз за кадр, после чего ивента уже нет.

Ответ как это исправить вам написали выше.

nile писал(а): Если я правильно понял:

Синтаксис:
Используется csharp

bool BlockEnable = false;

void OnGui()
{
if (GUI.Button(Rect (6,6,50,50), icon))  BlockEnable = !BlockEnable;


if (BlockEnable){
       GUI.Box (Rect (55,10,90,85), "User Menu");
       if (GUI.Button (Rect (60,35,80,15), "Person")) {
              ....
              }
}
}
}
 
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: GUI из скрипта

Сообщение shkeep 26 авг 2013, 16:01

Спасибо. Заработало.
shkeep
UNец
 
Сообщения: 5
Зарегистрирован: 26 авг 2013, 13:10


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33