Зачем использовать куски с бесконечным созданием мира (единство С# 2d сверху вниз)

Я делаю 2D-игру на выживание в верхней части дома, у меня работает Perlin-Noise (я загружаю разные спрайты в зависимости от значения Perlin-Noise), но теперь я нахожусь в точке, чтобы создать «пол» внутри камеры и удалить «пол» вне поля зрения камеры. Когда я гуглю или смотрю на YouTube, я вижу только учебные пособия, в которых используются фрагменты.

Мой «пол» сделан из спрайтов, и я использую коллизии (например, вы не можете ходить по горам).

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

Итак, я мог:

1) Я делаю чанки со спрайтами, например, 3x3 и загружаю их

2) Я просто загружаю нужные спрайты (можно назвать это кусками 1x1)

Я не могу найти никакой выгоды для 1), но все учебники используют куски. Так что, возможно, я что-то упускаю

Спасибо за ваше время :)


person Danielle Geelen    schedule 20.11.2018    source источник
comment
Я считаю, что то, о чем вы говорите, называется отбраковкой, показывая только те элементы, которые в данный момент видны в пространстве камеры. Я написал ответ на вопрос о более быстром способе загрузки кучи 2d спрайтов. Это может быть вам полезно... 2d-sprites-in-un/51658132#51658132" title="Какой самый быстрый способ создать и отобразить большое количество 2d-спрайтов в un"> stackoverflow.com/questions/51614740/   -  person AresCaelum    schedule 20.11.2018
comment
Чанкинг, кстати, нужен только для более быстрого рендеринга. Если вы рисуете много спрайтов параллельно, как большой толстый кусок, это быстрее, чем один за другим. Читать с forum.unity.com /потоки/   -  person Dan Rayson    schedule 20.11.2018
comment
Да, я имел в виду выбраковку :). Так что, если у меня нет проблем из-за медленного рендеринга, мне не нужны чанки? (мой вид не такой большой, я думаю, это спрайты 85x48) При запуске я загружаю весь вид, и когда игрок, например, идет вправо и превышает определенную позицию, я добавляю столбец из 48 спрайтов (я добавляю их с помощью цикла и функция mathf.perlinnoise) Затем я удаляю 48 спрайтов слева с помощью raycastAll, потому что я знаю положение удаляемого столбца. Я делаю то же самое для других направлений. Не знаю, лучшее ли это решение, но оно работает :)   -  person Danielle Geelen    schedule 25.11.2018


Ответы (1)


Я использую конечную карту, но идеи похожи. У меня есть карта, где каждая ячейка имеет размер 100*100 метров. Для каждой из этих ячеек я храню данные высокого уровня, такие как форма земли (например, холмы, высокие горы, океан), биом (пустыня, снег, лес) и погода.

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

Использование больших фрагментов также может повысить производительность рендеринга ландшафта, поскольку все они могут использовать одну и ту же 3D-сетку. Высота закодирована в текстуре, и шейдер получает к ней доступ.

person Orchaldir    schedule 30.11.2018