Как это сделать редактируемым?

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Как это сделать редактируемым?

Сообщение Riddik 11 май 2011, 17:56

Привет!
Прошу совета у опытных камрадов.

Есть игровое поле, состоящее из одинаковых объектов - плиток, подобно стене. А-ля 2d карта из тайлов, плитки лежат в одной плоскости. Пока поле могло быть просто прямоугольной формы, все было хорошо. В скрипте, который строил поле при старте игры, в public полях лежали две переменные, число строк и число столбцов, которые задавал дизайнер. По ним и строилась прямоугольная область из плиток в Start().
Теперь дизайнер хочет, чтобы поле было не строго прямоугольным, а была возможность сделать его ступенчатым.
Одинм словом, надо предоставить редактор формы поля.
Вот тут я никак не могу подружить редактор с этим делом. По идее решил выводить сначала все плитки исходя из строк и столбцов, чтобы дать возможность удалить ненужные плитки геймдизу. Но, тут одни проблемы: вместо Start() поле пробывал строить в OnDrawGizmos(), но после запуска игры и "возврата" из неё обекты генерировались по новой, захламляя иерархию и вьюпорт.
В общем, понятно, можно делать кучу проверок в OnDrawGizmos(), чтобы не генерировать уже созданное поле при старте редактора или возврата из режима игры, и т.д. Но тут уже никакой гибкости, как поле построить заново и т.д. через OnDrawGizmos() будет бардак, и что-то мне подсказывает, что это все очень через попу и есть более здравое решение, но без совета опытных коллег не выплыву.
Что придумать, чтобы обойтись встроенными возможностями редактора Unity и не писать его отдельно?
Тем более что дальше, предвижу, дизайнер захочет менять расстояние между плитками и их масштаб, и результат видеть сразу, не запуская для этого игру.
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение Multirezonator 12 май 2011, 17:05

- Пусть дизайнер сам собирает поле из блоков(тайлов), как он хочет в эдиторе - перетягивает масштабирует их и т.д..
- Скрипт генерирующий уникальное(такое как хочет дизайнер) поле не нужен.
- Если нужно знать данные о размерах плит, высотах и т.п. - делайте скрипт который будет передавать данные о положении(трансформе) плиты на которой он весит при старте. И вешайте его на префаб своей плиты - этот префаб-блок и будет стройматериалом дизайнера.

:-? я бы так сделал.
Скрытый текст:



Аватара пользователя
Multirezonator
UNITрон
 
Сообщения: 248
Зарегистрирован: 15 фев 2010, 16:12
Откуда: Украина, Луганск
  • Сайт

Re: Как это сделать редактируемым?

Сообщение Riddik 13 май 2011, 14:10

Дело в том, что руками это делать почти убийство, так как расстояние между плитками должно быть точным до тысячных. Это же касается и координат плиток в 3d пространстве, которые отличаются друг от друга на точный шаг. Поэтому выстраивать плитки должен скрипт.
Проблема лишь в том, чтобы дать дизайнеру возможность удалить некоторые плитки из уже построенного скриптом прямоугольного поля из этих плиток. Ну и все отсюда вытекающие: изменить то самое точное расстояние между плитками и тут же увидеть, как поле выглядит после изменений и т.д.

Что можно придумать, выручайте, пожалуйста!

В соседней теме "Болванка для редактора-чего-нибудь " можно делать только GUI-морду для каких-то настроек, как я понял. Нельзя чертить линии, из которых бы можно было выстроить сетку, там бы дизайнер и потыкал на ненужные плитки.
С другой стороны... можно накидать кнопок по аналогии с плитками, масштаб кнопок, расстояние между ними и количество "строк" и "столбцов" будет соответствующим:)
Но мне кажется, что это как-то непрофессионально :) Да и все равно будет неясно, как поле выглядит в сцене до старта игры.
Что скажите, коллеги?
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение Riddik 24 май 2011, 22:03

Посоветуйте хоть что-нибудь. Неужели такая безвыходная ситуация?
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение burlak 24 май 2011, 22:18

Скриншот поля прислать можете? Что то типа WarCraft 2?
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Как это сделать редактируемым?

Сообщение DbIMok 24 май 2011, 22:24

да какая безвыходная. нужно просто брать и делать. для начала как-нибудь, как можете, как получится. потом делать удобнее, переделывать.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как это сделать редактируемым?

Сообщение Riddik 25 май 2011, 09:42

burlak, поле как в match3 играх.

DbIMok, чтобы поле можно было редактировать, его нужно как-то визуализировать до старта игры во вьюпорте. Здесь идей нет. Кроме как выдумывать с GUI, как я описАл выше. (где кнопка - это плитка).
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение Syberex 25 май 2011, 10:28

Дизайнер хочет работать в редакторе?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Как это сделать редактируемым?

Сообщение burlak 25 май 2011, 10:56

Вроде бы поле простое - состоящее из плиток. Сделайте скрипт, который просто выравнивает все плитки к ближайшей правильной координате.

Чтобы не мучатся с интерфейсом, можно все плитки поместить в контейнер, на котором указать расстояние между плитками. Скрипт будет получать контейнер, считывать с него расстояние, ну и выравнивать дочерние плитки контейнера согласно заданному значению.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Как это сделать редактируемым?

Сообщение Riddik 25 май 2011, 12:27

Syberex писал(а):Дизайнер хочет работать в редакторе?


Желательно, но не критично.

burlak писал(а):Вроде бы поле простое - состоящее из плиток. Сделайте скрипт, который просто выравнивает все плитки к ближайшей правильной координате.

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


Как раз плитки в контейнере. Контейнер - это пустышка, скрипт которого выстраивает поле из заданного количества строк и столбцов.
Вы предлагаете руками "накидать" плитки, а скриптом контейнера их выравнивать? Это всё равно очень непроизводительно для дизайнера. Уровней больше ста, в каждом уровне поле из более чем 150 плиток. Это ж сколько мороки. Не говоря уже о переделках.
Все же надо дать ему возможность строить поле автоматом, а руками удалить 5 - 10 плиток и всё.
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение DbIMok 25 май 2011, 12:29

есть 2 варианта: "поле" собирается в редакторе юнити, из него создается префаб/бандль, либо данные об объектах сохраняются в конфиг, в игре инстантится префаб либо по разобранному конфигу строится поле. это неудобно. следующий вариант - в игре нажимается комбинация клавиш (редактор юнити дизайнеру не нужен), появляется гуи менюшка, панель инструментов, дизайнер рисует уровни, сохраняет их в конфиги. это удобно и правильно.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Как это сделать редактируемым?

Сообщение Riddik 25 май 2011, 13:05

DbIMok
Второй вариант выглядит классно.
Здесь конфиги - это свои файлы, формат которых я делаю каким хочется, хоть бинарные файлы, хоть xml - unity все позволяет? В смысле, никаких конфликтов не будет, если к unity - ресурсам добавить свои папки с файлами, из которых грузить данные?
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11

Re: Как это сделать редактируемым?

Сообщение burlak 25 май 2011, 13:06

Riddik писал(а):Как раз плитки в контейнере. Контейнер - это пустышка, скрипт которого выстраивает поле из заданного количества строк и столбцов.
Вы предлагаете руками "накидать" плитки, а скриптом контейнера их выравнивать? Это всё равно очень непроизводительно для дизайнера. Уровней больше ста, в каждом уровне поле из более чем 150 плиток. Это ж сколько мороки. Не говоря уже о переделках.
Все же надо дать ему возможность строить поле автоматом, а руками удалить 5 - 10 плиток и всё.


Тогда еще проще) На контейнер вешаете компоненту в которой указано:
1. Количество строк
2. Количество столбцов
3. Размер ячейки
4. Можно еще префаб ячейки - чтобы кодом много не писать.

Запускаете скрипт, который генерит нужные ячейки в нужных местах. Можно потом компоненту грохнуть... Вроде все.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Как это сделать редактируемым?

Сообщение Riddik 25 май 2011, 18:38

burlak
Именно так всё и есть, но контейнер генерит сплошное поле ( Количество строк х Количество столбцов).
Вопрос-то в том и состоял, чтобы иметь возможность из этого сплошного поля удалить какие-то ячейки или добавить до запуска игры. Сделаю редактор, как посоветовал DbIMok. Естественно, этот вариант был очевиден, просто думал есть лучше, воспользовавшись встроенными возможностями редактора Unity.
Аватара пользователя
Riddik
UNITрон
 
Сообщения: 160
Зарегистрирован: 18 апр 2011, 11:11


Вернуться в Editor

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

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