Представляю вашему вниманию канал NME_TextWrap,
задачей которого является автоматический перенос слов на следующую строку, если они не влезают в определённый диапозон.
Часто подобная проблема возникает при отображении произвольного текста на элементах ГУИ. Без переноса они выходят за рамки элемента, что ,безусловно, не красиво и не приемлемо.
Кратко о сути канала:
на вход канала подаётся текст
на выходе получается текст с автоматическим форматированием переноса слов, кроме того можно установить максимальное кол-во строк в выходном тексте и задать смещение от первой строки.
Описание:
NME_TextWrap ([in]Text SourceString, [out]Text WrapString, [in]Float maxStringSize, [in]Float oneSimbolWide, [in]Float firstLineOffset, [out]Float WrapStringCount)
SourceString - исходный текст ()
WrapString - полученный текст с установленными переносами на след строку
maxStringSize - максимальная длина строки в Юнитах
oneSimbolWide - ширина одного символа в Юнитах
maxVisibleLines - максимальное кол-во строк выходного текста
firstLineOffset - смещение строк выходого текста (0- смещения нет, 1 - смещение на одну строчку)
WrapStringCount - количество строк в преобразованном тексте
Не заменим при создании элемента ГУИ для просмотра текста с возможностью скролирования.
Исправление багов:
- отсутствие чилд каналов не провоцирует вылет
- отсутствие строки в канале SourceString не провозирует вылет
- оптимизация скорости работы
- канал отслеживает всевозможные изменения в входных параметрах, и если таковые произошли - канал перестраивает текст. Если изменений нет , то не вызывается обратотка текста, тем самым экономя время обработки.
- добавлен выходной параметр - WrapStringCount - количество строк в преобразованном тексте
Ниже представлены:
схема подключения
пример (стрелками вверх/вниз - скролирование текста)
канал (Релиз для Q.4.3.2)
Канал действительно полезный, но я бы еще добавил в качестве выходного аргумента количество строк, получаемых при форматировании текста (порой требуется при вертикальном выравнивании относительно центра).
А еще можно добавить функцию выравнивания текста по ширине, по центру и т.д.
А еще можно добавить функцию выравнивания текста по ширине, по центру и т.д.
это уже вопросы отображения, а не редактирования текста.
В Квесте предусмотрено отображение 4 мя каналами:
1)текстурный текст
2)3Д текст
3) 2Д экранный текст
4) 2Д экранный текст (дэбаг textout)
последний поддерживает центрирование и выравнивание.
По вопросу отображения полностью согласен - снимаю вопрос с повестки дня -:). Просто я привык пользоваться примитивами: сам преобразую - сам отображаю.
А что косается количества преобразованных строк - это порой важно. К примеру: выходной текст составляет две строки или три? Как его позиционировать по dY? (если нужно выровнять по центру)
P.S.: Может быть я плохо искал но до сих пор не нашел способа стандартными каналами квеста отобразить текст с выравниванием по ширине.
ЦитироватьP.S.: Может быть я плохо искал но до сих пор не нашел способа стандартными каналами квеста отобразить текст с выравниванием по ширине.
я тоже :-\
В канал внесены изменения.