Изпичане на 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 not additive ще замени текущо заредената навигационна мрежа с тази на зареденото ниво, така че не е това, което търсите, предполагам. Ако добавката за натоварване не работи правилно с navmesh (не си спомням дали е нова функция на 5.x), публикувайте съответния код, за да мога да погледна, или евентуално изпратете доклад за грешка. - person Heisenbug; 17.04.2015
comment
Предполагам, че точно това търся. Имам игра, в която мога да избирам на кое ниво искам да играя. Граница с показани нива. За да започна следващото ниво, трябва да премина предишното, но! но винаги мога да се върна към по-стария (напр. искам да получа по-добър резултат). Режимът на игра е много подобен на ядосаните птици. BTW използвам 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