2016-06-08 2 views
0

Я подумываю о создании симуляторной игры в городском транспорте, основанной на карте плитки, подобной simcity. Поскольку транспорт является основным компонентом, я не собираюсь подробно описывать город, например, рисовать все здания или другие. Но мне нужно разделить город на районы и деревни.Unity большой, динамическая карта плитки

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

Проблема в том, что буквально много плиток. Конечно, я не буду использовать все плитки для GameObjects, но массив, хранящий информацию о плитке, становится как 4000x3000 (для 12 000 000 фрагментов). Это нормально? Я думаю, что это серьезно замедлит игру.

Я искал множество способов создания карт плитки, но эти карты плитки предназначены для RPG .. они просто спрайты и фон.

Мои плитки должны меняться динамически (возможно, цвета, и я делаю игру с 3D, поэтому, возможно, плитка может иметь высоту, которая может измениться), показывая статус этой плитки (небольшой регион города) , Что будет лучше для моих нужд?

Спасибо!

+0

Подумайте о файле с изображениями размером 4000x3000 точек, возможно, найдите, как они обрабатывают этот объем данных? – Catwood

+0

Привет, пользователь, вы не можете просить об этом здесь. Это для кодовых вопросов. Перейдите на сайт gamedev.com, и вы получите отличный ответ в течение нескольких часов. – Fattie

+0

Привет @Catwood. Это совершенно не связано. Unity3D имеет (очевидно) целые системы и активы, связанные с играми на основе плит; это игровой движок. – Fattie

ответ

1

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

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

http://matthewlynch.net/2017/02/19/efficient-artefact-free-2d-tile-mapping-in-unity-5-5/

Единственное предостережение, которое я бы упомянул (это обсуждается в учебнике, но не прямо адресовано) заключается в том, что вы должны по-разному делить свою карту.

Я бы не рекомендовал использовать плитки 100x100 в одной сетке и на самом деле рекомендовал бы разбить ее еще больше. Но как только вы начнете работать с основами создания плит tile-> mesh, это не сложно сделать.

+0

Вам действительно нужно учиться и работать с окклюзионным отбракованием, что является основной и центральной частью работы с 3D-двигателями. (Окклюзионная отбраковка, конечно же, полностью встроена в Unity, у них превосходная, отличная от отрасли окклюзия). – Fattie

+0

Отверстие окклюзии является сильным аргументом для рендеринга плиток в сетки. Unity (и графический движок под ним) будет отбирать объекты и даже вершины, которые не видны, но это только часть изображения. Для поддержания игровых объектов Unity в дереве все еще накладные расходы. Даже если вы отключите игровые объекты в дереве, все еще накладные расходы. Это довольно легко увидеть. Поместите 10 000 спрайтов (как отдельных игровых объектов) в сцену Unity и посмотрите на производительность. Он резко падает. Даже если видно только несколько сотен. –

+0

Отверстие окклюзии также является причиной того, что я бы рекомендовал не создавать сетку 100х100, но разбить ее на более разумные части, представляющие, сколько плиток может поместиться на экране.Поскольку продвижение в качестве алгоритмов отбраковки окклюзии, всегда всегда быстрее и эффективнее, если весь объект можно исключить с помощью простой позиционной проверки. –

Смежные вопросы