[РЕШЕНО] Создать 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), "Кнопка"); } } Ну и там поправь как тебе надо, если вообще заработает
|
|
| |
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, дайте пожалуйста на него ответ Добавлено (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) --------------------------------------------- Тогда всё, вопросов нет, плюсики я поставил, так что все рады
|
|
| |
romgerman | Дата: Среда, 21 Августа 2013, 21:10 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| robertono, да.. я просто думал, что так не будет работать и сейчас решил попробовать И ещё не успел. Добавлено (21.08.2013, 21:10) --------------------------------------------- Всё работает))
|
|
| |
robertono | Дата: Среда, 21 Августа 2013, 21:11 | Сообщение # 11 |
Чокнутый Кот
Сейчас нет на сайте
| Цитата (romgerman) Всё работает)) а почему бы ему и не работать
|
|
| |
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 |
|
| |