Описание
Это примечания, о которых следует помнить при обновлении проектов с Unity 4 до Unity 5, если в вашем проекте используется AI/Navmesh Сетка, которую Unity создает для аппроксимации пешеходных зон и препятствий в вашей среде для поиска пути и навигации под управлением ИИ. Подробнее
См. в функциях Словарь.
- Контур навигационной сетки может выглядеть иначе из-за измененного разделения — в случаях с узкими коридорами/дверными проемами и т. п. — это может привести к различиям в связности. Решите проблему, изменив воксельтрехмерный пиксель. Подробнее
См. размер Словарь для построения навигационной сетки. - Установка места назначения для NavMeshAgent не возобновляет работу агента после вызова команды «Стоп». Чтобы возобновить работу агента, вызовите команду «Возобновить» явно.
- NavMeshAgent.updatePosition: когда updatePosition имеет значение false и преобразование агента перемещается, положение агента не меняется. Раньше положение агента сбрасывалось на положение преобразования, ограничиваясь ближайшей навигационной сеткой.
- Компонент NavMeshObstacle: форма по умолчанию для вновь созданных компонентов NavMeshObstacle — это прямоугольник. Выбранная форма (коробка или капсула) теперь применяется как к вырезанию, так и к уклонению.
- Сетка навигации, созданная в более ранних версиях Unity, не поддерживается. Вы должны перестроить с помощью Unity 5. Вы можете использовать следующий скрипт в качестве примера того, как перестроить данные NavMesh для всех ваших сценA Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь.
Пример сценария повторной выпечки
#if UNITY_EDITOR
using System.Collections.Generic;
using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.AI;
public class RebakeAllScenesEditorScript
{
[MenuItem ("Upgrade helper/Bake All Scenes")]
public static void Bake()
{
List sceneNames = SearchFiles (Application.dataPath, "*.unity");
foreach (string f in sceneNames)
{
EditorApplication.OpenScene(f);
// Rebake navmesh data
NavMeshBuilder.BuildNavMesh ();
EditorApplication.SaveScene ();
}
}
static List SearchFiles(string dir, string pattern)
{
List sceneNames = new List ();
foreach (string f in Directory.GetFiles(dir, pattern, SearchOption.AllDirectories))
{
sceneNames.Add (f);
}
return sceneNames;
}
}
#endif