Пятница, 15 Ноября 2024, 12:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
[РЕШЕНО] Создать 100 кнопок GUI автоматически
robertonoДата: Среда, 21 Августа 2013, 20:49 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Делаю что то типо инвентаря, но это не инвентарь) Вообщем мне нужно создать 100 кнопок. Но блин вручную создавать 100 строк + ещё действие при нажатии - это ужас. Есть варианты что бы сгенерировать их при запуске скрипта ?

Сообщение отредактировал robertono - Среда, 21 Августа 2013, 21:12
shubniggurathДата: Среда, 21 Августа 2013, 20:53 | Сообщение # 2
www.playnoread.com
Сейчас нет на сайте
Наверное вы слышали про циклы.

Учу 3д!
robertonoДата: Среда, 21 Августа 2013, 20:55 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
shubniggurath, я то слышал. Только я не попробовал... Ведь OnGUI это что то типо Update, тоже постоянно обновляется код. Если я сделаю цикл for где создам 100 кнопок, они поидее создадутся и пропадут. А повторять этот цикл постоянно - мне кажется снизит фпс жёстко.
romgermanДата: Среда, 21 Августа 2013, 21:00 | Сообщение # 4
старожил
Сейчас нет на сайте
Я не пробовал, но думаю так:
Код

function OnGUI() {
for(i=0; i <= 100; i++){
GUI.Button(Rect(10 + (i*50+10),10,50,50), "Кнопка");
}
}

Ну и там поправь как тебе надо, если вообще заработает biggrin
shubniggurathДата: Среда, 21 Августа 2013, 21:02 | Сообщение # 5
www.playnoread.com
Сейчас нет на сайте
Цитата (robertono)
А повторять этот цикл постоянно - мне кажется снизит фпс жёстко.

Вы это сами придумали? А то что каждый фрейм ВСЕ перерисовывается вас не смущает? Как написал уже romgerman, элементы ГУИ перерисовываются в хэндлере OnGUI.


Учу 3д!
romgermanДата: Среда, 21 Августа 2013, 21:03 | Сообщение # 6
старожил
Сейчас нет на сайте
shubniggurath, согласен. Когда цикл FOR закончит работу, всё вернётся на свои места и фпс и прочее.
robertonoДата: Среда, 21 Августа 2013, 21:04 | Сообщение # 7
Чокнутый Кот
Сейчас нет на сайте
shubniggurath, а как использовать на примере romgerman нажатие на кнопку?
romgermanДата: Среда, 21 Августа 2013, 21:05 | Сообщение # 8
старожил
Сейчас нет на сайте
robertono, а вот это хороший вопрос.
robertonoДата: Среда, 21 Августа 2013, 21:09 | Сообщение # 9
Чокнутый Кот
Сейчас нет на сайте
romgerman, дайте пожалуйста на него ответ smile

Добавлено (21.08.2013, 21:08)
---------------------------------------------
romgerman, а понял, очень просто

Код

for(int i=0; i <= 100; i++){  
     if(GUI.Button(new Rect(10 + (i*50+10),10,50,50), "Кнопка")){
      Debug.Log("Button presed. i == " + i);
     }
    }

Добавлено (21.08.2013, 21:09)
---------------------------------------------
Тогда всё, вопросов нет, плюсики я поставил, так что все рады happy

romgermanДата: Среда, 21 Августа 2013, 21:10 | Сообщение # 10
старожил
Сейчас нет на сайте
robertono, да.. я просто думал, что так не будет работать и сейчас решил попробовать smile И ещё не успел.

Добавлено (21.08.2013, 21:10)
---------------------------------------------
Всё работает))

robertonoДата: Среда, 21 Августа 2013, 21:11 | Сообщение # 11
Чокнутый Кот
Сейчас нет на сайте
Цитата (romgerman)
Всё работает))

а почему бы ему и не работать biggrin
andarkyДата: Четверг, 22 Августа 2013, 12:05 | Сообщение # 12
старожил
Сейчас нет на сайте
а я делаю иначе.
Возможно будете ругать, но...
итак, вот суть:
Создаю визуально GUItexture.
Настраиваю как нужно.
Пишу ей нужный скрипт с несколькими ф-циями.
Потом сохраняю ка PREFAB и удаляю.

Потом делаю скрпит который её вызывает .
и так:
Код

var Gui0=Instantiate(<prefab>, pos, rot);
for(int i=0; i <= 100; i++){    
var newGui=Instantiate(Gui0, pos, rot);
newGui.name='Gui'+i.toString();
newGui.SendMessge(<namefunc>,i); //ном.идентификатор
       }
      }

ну вот как-то так.

Код писал от балды, возможны синт.ошибки.
Выполняю его в разделе onStart:

Код

var <prefab>:GameObject; // а сюда надо из инспектора проекта перетащить тот самый Prefab-заготовку
function Start()
{
//тот код
}



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик


Сообщение отредактировал andarky - Четверг, 22 Августа 2013, 12:06
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг