Войти
ПроектыФорумОцените

Deathbring World: Rangers - [постапокалиптическая JRpg c пошаговыми боями и коллекционированием монстров] а ля Fallout + Pokemon Blue. (11 стр)

Страницы: 110 11 12 1317 Следующая »
#150
(Правка: 2:23) 2:22, 11 апр. 2021

Вот заскринил как у меня сделано. Когда я добавляю кнопку, то высота контента (зелёная рамка) увеличивается и когда она станет больше высоты Viewport (жёлтая рамка), автоматически появится прокрутка вниз.

Изображение


#151
14:10, 11 апр. 2021

Cpt. Adamov

Потратил 6 часов на настройку этого кошмара. Да действительно, в твоём
случае это работает но не в моём. Мне нужно к дочернему объекту в котором
уже настроен вертикальный лэйаут, тоже установить такой лейаут,
и в любом случае они начинают между собой конфликтовать,
и создавать проблемы. Я испробовал все настройки, всё что можно,
но добиться нужного результата не удалось. То текст скачет выше\ниже,
то ещё что слетает. По гуглив суть проблемы я лишь нашёл то, что люди
сталкиваются с тем же самым, и проблема не решается через инспектор.
Короче говоря, нужно управлять этими моментами кодом, писать свою
систему масштабирования.

Вот например так же народ офигивал с кривизны этой функции:
https://gamedev.ru/code/forum/?id=232094

#152
(Правка: 15:13) 15:02, 11 апр. 2021

Я тоже в своё время много времени потратил на изучение этого вопроса, зато с тех проблем не испытываю. Есть там несколько подводных камней, но обычно всё работает как надо с настройками из инспектора.
Cpt. Adamov
> Мне нужно к дочернему объекту в котором
> уже настроен вертикальный лэйаут, тоже установить такой лейаут,
> и в любом случае они начинают между собой конфликтовать,
Зачем?  У тебя 2 окна Scroll View (надо отключить горизонтальную прокрутку и удалить горизонтальный ползунок за ненадобностью и вместо elastic сделать clamped). В одном окне обычный текст, а в другом кнопки, как в моём примере. Надо просто из скрипта менять текст в верхнем окне и внутри кнопок с вариантами ответов, а лишние кнопки отключать. Всё будет масштабироваться автоматически и когда надо будет появляться прокрутка. Возможно понадобится в скрипте использовать LayoutRebuilder.ForceRebuildLayoutImmediate, чтобы применились новые размеры. Мне кажется ты что-то усложняешь, ну или я что-то недопонимаю.

#153
(Правка: 15:45) 15:24, 11 апр. 2021

Cpt. Adamov
Мне нужно масштабировать блок content а после к припаренченному к нему тексту тоже применять
машстабирование, чтобы сам геймобджект текста растянулся как надо, чтобы он встал как надо,
и при этом  чтобы он текст выровнял как надо. Чтобы это работало, нужно использовать вертикальную
лейаут группу и в блоке контент и отдельную в блоке текста, по другому не сработает, так как эта
штука влияет на все чайлды и без второй такой текст улетает хрен знает куда. Но всё равно, они
друг с другом конфликтуют, и так-как в окно постоянно подгружается текст разного размера,
из-за этого конфликта он неправильно позиционируется *геймобджект текста*. Поверь, я уже
всё перепробовал, эта функция говно. Она номрально работает только если такой-же нету
в чайлде объекта, к которому она привязана.

Возможно я непонятно объясняю, возможно ты не сталкивался с конкретной ситуацией.
Когда это кнопки с одним словом как в твоем примере там априоре проблем нет,
когда это динамично меняющийся в размерах текст со строки на строк 15, всё работает криво.
В общем это не решаемо через инспектор, я уже гугулил, нужно решать проблему по своему программно.

З.ы. Я использую TextMeshProUGUI, а не обычный текст.

#154
(Правка: 17:17) 16:35, 11 апр. 2021

Cpt. Adamov

В данный момент решил проблему вертикального скроллинга программно в таком ключе.
Я не могу отключать сам скроллбар, но могу выключить Sliding Area, что и ставлю по умолчанию.

Когда я загрузил конечный текст в TextMeshProUGUI, я проверяю его границы.
Для этого мне сначала нужно вручную обновить сетку, чтобы получить его размеры
вовремя, не дожидаясь того. когда он отрендерится после всего цикла

текст.ForceMeshUpdate();

Далее я получаю его размеры

Vector4 размеры = текст.bounds.extents;
После проверяю высоту
размеры.y
"extents показывает половину высоты от пивота",
так вот если размер по игрику больше, чем у самого
TextMeshProUGUI, я включаю Sliding Area.

———

Думаю тут сразу можно посмотреть высоту блока content, и подогнать его под размер текста.
Если понадобится, то сделаю. Пока этот блок просто огромный по вертикали, и это никак
не заметно, пока отключена Sliding Area.

Добавил:
Решил программно проблему с размерностью блока content.

                ContentBlockRect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, (размеры.y * 2f + 30f));
                ContentBlockRect.ForceUpdateRectTransforms();

З.ы. Вместо extents можно size использовать в принципе, это полный размер.

#155
(Правка: 19:18) 19:18, 11 апр. 2021

TERMOGAD
> По моей прикидке, будут папки с разными локализациями,
> и нужные тексты будут браться из нужной папки. В данный
> момент я сомневаюсь, что кроме русского и английского будет что-то ещё.

  Ты сейчас пишешь скрипты на русском. Ты будешь потом переписывать каждую строку на английский? А если в русском поменял что-то? Надо будет одновременно менять в двух скриптах. Рано или поздно будут проблемы, как и с тем, что нет никакой подсветки и проверки валидности скрипта. Опять же, будут и условные переходы, и переменные рано или поздно. В общем, Тьюринг во все поля.
Я тоже в свое время делал свои собственные скрипты и набралось 50к+ слов, где было много опечаток, неправильных меток для переходов, незакрытых блоков и пр. Поверь, лучше сделать простейшие тулы на ранних этапах, чтобы быстро видеть и находить ошибки , чем потом сидеть в дебаггере, когда одна из каких-то глубоких веток неправильно работает.

Изображение

Я постил примеры визуализации диалогов, хотя сам с ними работал только через свои скрипты, но, если будет кто-то менее технически подкованный с тобой работать, полезно иметь что-то еще.
Но, если у тебя неограниченные сроки, и ты все хочешь делать только сам - дело хозяйское.

#156
(Правка: 20:34) 20:28, 11 апр. 2021

Developter

Ты сейчас пишешь скрипты на русском. Ты будешь потом переписывать каждую строку на английский?

А зачем мне тексты хранить в самих скриптах? Если я могу брать их извне, в соответствии с ID языка.

Поверь, лучше сделать простейшие тулы на ранних этапах, чтобы быстро видеть и находить ошибки , чем потом сидеть в дебаггере, когда одна из каких-то глубоких веток неправильно работает.

Мои ветки строятся гипертекстовой разметкой, переброс на ветку осуществляется тэгом с номером
ветки. Диалоги могут быть бесконечного размера. Чтобы проверить что происходит в каком блоке
дебаггер не нужен, нужно открыть блокнот и посмотреть на блок. Я не храню тексты и структуру
диалогов внутри скрипта, всё находится во внешнем тексте с разметкой. Моя диалоговая система это браузер.

Cpt. Adamov

Нижний блок с кнопками сделал по твоему образцу, с одним отличием, вертикальные лейаут группы
у меня добавлены в каждую кнопку, когда у тебя в кнопках может внезапно измениться текст на случайное количество символов, по другому не получится. Там есть некоторый конфликт,
из-за наличия лейаута в content, тем не мене вроде бы всё работает, зацени:

https://disk.yandex.ru/d/qFlQSHfcpcxVrg

#157
2:28, 12 апр. 2021

TERMOGAD
> зацени:
Посмотрел. Стало лучше, теперь ползунки появляются когда надо. Надо ещё в настройках элемента Scrollview убрать горизонтальную прокрутку и эластичность, чтобы нельзя было сделать так:
Изображение
TERMOGAD
> Там есть некоторый конфликт,
> из-за наличия лейаута в content, тем не мене вроде бы всё работает
Я в каком-то из своих проектов тоже так делал, всё работало нормально, несмотря на конфликт.

#158
12:33, 12 апр. 2021

Cpt. Adamov

Вроде допилил, протестируй пожалуйста, если не сложно.

https://disk.yandex.ru/d/05rmF5WCMhf8Rg

#159
14:28, 12 апр. 2021

TERMOGAD
> Вроде допилил, протестируй пожалуйста, если не сложно.
Теперь всё огонь )) Единственный момент бросился в глаза, что имя собеседника прокручивается вместе с текстом. Я бы вынес имя над окном чтобы оно всегда было на виду во время диалога.

#160
15:04, 12 апр. 2021

Cpt. Adamov

Благодарю за советы и тестирование.

Я бы вынес имя над окном чтобы оно всегда было на виду во время диалога.

Сделано. Вынес за пределы "Viewport", теперь имя остаётся на месте. Так как поле "Content"
занимает область ниже строки с именем NPC, его реплика не заезжает под имя.

#161
18:13, 12 апр. 2021

TERMOGAD
> А зачем мне тексты хранить в самих скриптах? Если я могу брать их извне, в
> соответствии с ID языка.

У тебя в скриншоте текст прямо в скрипте без айдишников. Есть пример, как будет выглядеть на разных языках?

#162
(Правка: 18:45) 18:34, 12 апр. 2021

Developter

Я не знаю про какой скриншот речь, кинь на него ссылку.
Конкретно в диалоговой системе весь диалог грузится из тхт файлов,
кроме слов "Закрыть диалог", в будущем эти слова тоже будут грузиться из файла.

В данный момент текст присутствует в скрипте с массивом скиллов например,
или в некоторых кнопках гуя, это временное решение.

Примера нет. Но всё будет точно так же, как и на русском. Если хочешь увидеть диалог на английском,
можешь написать его сам, и я добавлю персонажа с этим диалогом. Накидай ТХТшник в блокноте
по образцу, не забудь сохранить его в кодировке "Юникод".

Образец: https://gamedev.ru/files/images/154209_1618241320_obr.jpg

Разметка:

$ - начало новой реплики NPC.
* -  Стирает всё символы ТХТшника начинающиеся с этого символа,
это обязательный символ для любых выводимых текстов, располагать его нужно в конце.
_ - Трёт все символы перед ним, нужен для удаления цифровой разметки.
# - Начало ответа на реплику NPC.
@ - Цифра после собаки указывает номер реплики, на которую перебросит ответ.

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

#163
10:52, 17 апр. 2021

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

#164
15:00, 17 апр. 2021

Хорёк

Пошаговость на самом деле, это усложнение. Слешер я реализовал бы быстрее намного,
ведь всю эту пошаговую систему ещё реализовать нужно было правильно, а это не просто.
Игра разрабатывается с целью создания отечественной вселенной монстров в противовес
японским покемонам, а покемоны в свою очередь начались с РПГ с пошаговыми боями,
где можно было ловить монстров. Я подражаю тем первым играм 90ых про покемонов,
но я ещё любитель всяких фолаутов, и героев меча и магии, и по этому отражение этого
ты уже можешь видеть в моей игре.

В данный момент в игре отсутствует возможность сохранения, так-как ещё не пришло
время её вводить. Дополнительные умения монстры получают сейчас на 5 и 10 уровнях
прокачки, до них не просто добраться без сейвов.

Игра постоянно допиливается, этой ночью я наконец реализовал прототип квестовой системы,
пока без интерфейсов. Через диалог можно получить квест, и его можно выполнить.
Специально для тебя выкладываю свежий билд: DR-V-18.4.4

Изменения:
1. Подключён сырой прототип квестовой системы.
2. Появился новый НПЦ "Капитан Абраам", у которого можно взять пока единственный в игре квест.
3. Игрок стартует с нулём гиперкубов.
4. До выполнения квеста Капитана Абраама игрок не сможет столкнуться одновременно
более чем с одним монстром. Это облегчит старт игрока, и выполнение первого квеста.
5. Теперь нельзя ловить монстров, если у тебя фуллпак (5 монстров в наличии).

Страницы: 110 11 12 1317 Следующая »
ПроектыФорумОцените