Запекание Unity 3D Nav Mesh

Мой вопрос относится к NavigationMeshes, я подготовил генератор карт, основанный на сетке. Я могу создать карту, состоящую из кубов, разделенных на стены и пол.

после создания этого я могу сохранить его как префаб, позже в меню навигации я могу запечь меши, но дальше я хочу сохранить его как префаб с уже запеченными навигационными сетками. Когда я делаю это и удаляю карту со сцены, она исчезает, но запеченная сетка остается. Чтобы снова поставить карту на сцену в другом месте, мне нужно снова запечь. Основная идея заключалась в том, чтобы сгенерировать уровни «x» с запеченными сетками, а затем просто создать их экземпляры в зависимости от того, какой уровень я хочу. Это возможно? Спасибо за ваше время.

Отредактировано: после запекания некоторого примера navmesh появилась папка, названная так же, как сцена, над которой я работаю, и внутри есть файл navmesh. Теперь вот мой отредактированный вопрос. Могу ли я запечь несколько разных навигационных сеток для каждой карты, а затем, после загрузки такой карты, использовать правильную навигационную сетку в коде, чтобы они хорошо взаимодействовали?


person Power    schedule 17.04.2015    source источник


Ответы (1)


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

К сожалению, это невозможно. NavMesh сохраняются сценой, и в настоящее время вы не можете явно ссылаться на них / создавать их экземпляры.

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

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

person Heisenbug    schedule 17.04.2015
comment
Я уже встречал это решение где-то раньше, но я также заметил, что при попытке использовать LoadLevelAdditive возникли некоторые проблемы, а именно NavMesh ранее сохраненной сцены не загружался. Может ли вместо этого работать Application.LoadLevel? - person Power; 17.04.2015
comment
Какую версию Unity вы используете? Он должен работать. Неаддитивный LoadLevel заменит текущую загруженную сетку сеткой на загруженном уровне, так что я думаю, это не то, что вы ищете. Если добавление нагрузки не работает должным образом с navmesh (я не помню, является ли это новой функцией 5.x), опубликуйте соответствующий код, чтобы я мог посмотреть, или, в конце концов, отправить отчет об ошибке. - person Heisenbug; 17.04.2015
comment
Я думаю, это именно то, что я ищу. У меня есть игра, в которой я могу выбрать, на каком уровне играть. Граница с показанными уровнями. Чтобы перейти на следующий уровень, мне нужно пройти предыдущий, но! но я всегда могу вернуться к старшему (например, я хочу получить лучший результат). Режим игры очень похож на Angry birds. Кстати, я использую unity 5.0.4f pro. Возникает следующий вопрос. Дело в том, что LoadLevel будет работать, но нужно ли мне избавляться от текущей сцены перед загрузкой следующей? - person Power; 17.04.2015
comment
Уровень загрузки уничтожает текущую сцену (с текущей навигационной сеткой) и загружает новую (с относительной навигационной сеткой, если таковая имеется) синхронным способом. Если на каждом уровне есть своя навигационная сетка, которую можно использовать с loadlevel или loadlevelasync. - person Heisenbug; 20.04.2015
comment
В моем случае создание отдельной сцены для каждого уровня - лучший способ. Спасибо за очень полезные и полезные комментарии. - person Power; 20.04.2015