|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
02.12.2012, 00:16
|
#811
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
ИМХО такое с помощью OnGUI лучше вообще не делать... Если это чисто кнопки...
|
(Offline)
|
|
02.12.2012, 00:44
|
#812
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
А чем делать? Вручную плашками делать лень. Еще больше проблем получишь.
OnGUI у меня, кстати, один на все элементы. Иерархически посылается сообщение Draw всем элементам.
|
(Offline)
|
|
02.12.2012, 01:39
|
#813
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Ну если ты делаешь только для PC/Mac то сойдет, если под Android/iOS, то я бы подумал о плейнах или о том, чтобы взять готовое GUI.
|
(Offline)
|
|
02.12.2012, 01:58
|
#814
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
готовое GUI это ngui например? Там свои проблемы, и не бесплатен он. Ориентируюсь на смартфоны.
Я пытался делать свой gui плашками, но сильно застопорился на системе отслеживания нажатий.
Во первых я из главного(родительского) объекта иерархически искать на всех объектах мои коллайдеры и пускал в них луч, что конечно не быстро.
Во вторых там были какие-то проблемы с очередностью выполнения Update'ов. К сожалению нельзя перед Update проверить все кнопки и задать им например pressedDown = true, а после Update'ов сбросить все значения.
С первой проблемой можно разобраться сделав, чтобы каждый элемент сам себя проверял на нажатие, но перекрытие элементов тут уже не сработает.
Да и размещать элементы вручную оказалось напряжно. Пусть лучше это делает GUILayout.
|
(Offline)
|
|
02.12.2012, 02:06
|
#815
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
02.12.2012, 02:19
|
#816
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Лучше бы каждому скрипту аннотацией можно было бы задавать приоритет)
Нет, я конечно могу попробовать своему главному скрипту задать приоритет, чтобы он первым выполнялся.
Но во первых при переносе в другой проект это сломается.
Во вторых, если мне вздумается еще паре скриптов задать приоритеты, то может такая каша получится...
Кстати, update у дочерних объектов не должен вызываться позже? Если бы это было так, то проблемы наверно не было.
Кажется на сайте Unity писали, что на разных платформах оно вообще по разному вызывается. Стремно полагаться на очередность выполнения скриптов.
Можно корутиной дождаться конца кадра и сделать все проверки. И для следующего кадра уже было бы все готово. Но блин после конца кадра Input уже не работает.
|
(Offline)
|
|
02.12.2012, 02:30
|
#817
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Мне бы твои проблемы)
Чтобы проверить обрабатывался элемент в текущем кадре можно использовать номер кадра (хранить кадр последней обработки) - http://docs.unity3d.com/Documentatio...rameCount.html
Конец кадра ты знаешь как использовать.
Надо иметь свою очередь - Собери все компоненты свои с нужной очередью в массив или список.
|
(Offline)
|
|
02.12.2012, 02:45
|
#818
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Через "жопу" можно многие проблемы решить, но выльется это в тормоза, баги или просто не удобно использовать.
Ну узнаю я, что в данном кадре элемент еще не обрабатывался и что дальше? Насильно вызвать обработчик? Вариант конечно, но как говорится через Ж. Хотя, когда делаешь коммерческий проект, то делаешь только бы работало, и то порой фигово работает))
А у тебя какие проблемы?
Unity4 уже используешь? Наверно еще баги есть?
|
(Offline)
|
|
02.12.2012, 03:06
|
#819
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Четвертую не использую. Кнопки - плейны. Мои проблемы решаются по ходу возникновения.
По поводу лайоута - Unity делает дополнительный проход (вызов) OnGUI каждый кадр для расчета положений. Так что считай твой OnGUI вызывается минимум 2 раза за кадр (Layout, Repaint). Еще он обрабатывает события мыши или клавиатуры - это отдельный вызов OnGUI. Исходя из этого - функция OnGUI вызывается 2+ раза за кадр. Делай выводы).
|
(Offline)
|
|
02.12.2012, 03:42
|
#820
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Ну из-за того, что OnGUI вызывается два раза он не делает два раза одно и тоже. Отсутствие батчинга в gui больше тормозит.
|
(Offline)
|
|
02.12.2012, 11:18
|
#821
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
02.12.2012, 14:13
|
#822
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
|
(Offline)
|
|
03.12.2012, 22:43
|
#823
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопросы от новичка
NullReferenceException
ThirdPersonController.Update () (at Assets/Standard Assets/Character Controllers/Sources/Scripts/ThirdPersonController.js:325)
вот такие вот дела при нажатии пробела.
|
(Offline)
|
|
03.12.2012, 23:06
|
#824
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
ну так ищи где ошибка, щелкни по ней два раза в консоли, а там по ситуации.
|
(Offline)
|
|
03.12.2012, 23:39
|
#825
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопросы от новичка
_animation[jumpPoseAnimation.name].speed = jumpAnimationSpeed;
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:12.
|