【发布时间】:2021-04-08 04:16:53
【问题描述】:
我目前正在统一设计一款迷宫游戏,并且有一些敌人 AI 在迷宫周围追逐玩家。如果玩家到达迷宫中的某个图块,它将生成一个尺寸稍大的新迷宫。
我一直在使用统一 AI NavMeshSurface 类来实现这一点,并在生成关卡后调用surface.BuildNavMesh() 来生成导航网格。
每次重新生成关卡时,当前关卡的迷宫游戏对象都会被销毁:
public void GenerateNewMaze(int rows, int columns) { mazeData = dataGenerator.FromDimensions(rows, columns); 显示迷宫(); surface.BuildNavMesh(); } 公共无效 DisposeOldMaze() { GameObject[] mazeObjects = GameObject.FindGameObjectsWithTag("Generated"); foreach (mazeObjects 中的游戏对象 mazeObject) { 销毁(迷宫对象); } }我第一次运行它时效果很好:
但是从第二个开始,我开始发现一些奇怪的差距:
我想也许在谷歌搜索后表面上仍然有旧数据,我在再次构建导航网格之前尝试了一些解决方案,例如 surface.RemoveData() 和 NavMesh.RemoveAllNavMeshData(),但我似乎得到了完全相同的结果。
目前我只能考虑为每个迷宫生成一个新的 NavMeshSurface,但这似乎有点矫枉过正且没有必要。
【问题讨论】: