Как стать автором
Обновить
5
0
Трофим Продайвода @Wierrat

Пользователь

Отправить сообщение
Вы забываете, что это все можно сказать и про NGUI, а внесение изменений под свои нужды, концептуально ничем не отличается в этих продуктах, я даже лучше предпочту форк-пулл реквест.

У такого рода оптимизаций, как колдовство над батчингом, почти всегда есть порог, после которого они уже не приносят прироста производительности. Даже если нет возможности ограничить отображаемое количество элементов UI на низкопроизводительных девайсах, я предпочту разделить иерархию по слоям, каждый их них положить в отдельный атлас и включать слои по мере надобности/видимости. Все это поддерживается в Unity из коробки.

Я с недавних пор тоже инди-девелопер и тоже предпочитаю использовать проверенные решения, но всегда открыт для «пощупать что-то новое» и особенно готов поддержать инициативы открытия исходного кода!
Из личного опыта, хочу посоветовать избегать оптимизаций основаных на «недокументированных» возможностях технологий… что будет если изменится батчинг в юнити или изменится АПИ NGUI? Сколько займет трудозатрат добавить новые фичи? Что будет если количество элементов вырастет в двое и оптимизация уже не поможет?
У вас наверняка были причины так сделать, но дабы уберечь других, скажу — старайтесь участвовать в обсуждении требований к интерфейсу своего проекта, добавляйте асинхронную подгрузку элементов, разбивайте элементы на часто/редко используемые, группируйте. Подходов борьбы с этим зло много, главное вовремя его заметить!

И подытожу, все конечно зависит от конкретных задач, но с новым Unity UI я пока видел только прирост производительности и надеюсь эта тенденция в будущем будет только улучшаться!
Круто! Это отличный материал, который очень многим поможет. Думаю все согласятся, что лучше их максимально популяризировать (это я намекаю на статью ;)
Если навешивать события програмно, то в новом UI вообще никаких проблем:
button.onClick.AddListener(delegate{
     Debug.Log(button);
});


Но с новой системой событий, которая для триггеров, передает данные объектом BaseEventData (http://docs.unity3d.com/ScriptReference/EventSystems.BaseEventData.html). В нем нас интересует свойство selectedObject — ссылка на объект который инвокнул событие. Тоесть можно делать вот так:
public void MethodName(BaseEventData baseEventData) {
     Debug.Log(baseEventData.selectedObject.name);
}
Рад, что она вам пригодилась!

Все зависит от задачи, можно например сделать один обработчик с аргументом типа enum, который описывает возможные варианты поведения, а в редакторе, при выборе обработчика события onClick, в выпадающем списке, выбрать необходимое значение enum.

Но на мой взгляд это пол дела, если уже делать все красиво, то лучше навешивать события програмно при создании/инициализации. Например используя docs.unity3d.com/ScriptReference/Events.UnityEvent.html

C#
button.onClick.AddListener(delegate{methodName(arg);});


или для Unity Script
button.onClick.AddListener(function() {
     var closuredArg = arg;
     methodName(closuredArg);
});

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность