unity中 navmeshagent的移动禁用不了 怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中 navmeshagent的移动禁用不了 怎么办相关的知识,希望对你有一定的参考价值。

我是按照视频教程做的 它的意思说禁用navmeshagent的移动和旋转用animator控制移动和旋转 navmeshagent控制方向 为啥我跟他写的一样我的navmeshagent移动禁用不了

你在测试的时候会发现,人物的位置和navmeshagent的位置不一致,这里可以只禁用updateposition,方向还是可以跟navmeshagent一样,为了让位置保持一致,在Update使用差值,让两个位置融合:robotNav.transform.position = Vector3.Lerp(robotNav.transform.position, robotNav.nextPosition, Time.deltaTime * 3);
就大致不会鬼畜了,今天也学到这个,疯狂摸索后找到的解决办法,可能还有更好的。我觉得出这个问题可能是版本不一致,这个视频的时间太早了。
参考技术A
navAgent.stop();
方法
参考技术B 我遇到同样的问题 请问楼主解决了吗

Unity3D 官方移动游戏优化指南6.项目配置

有一些项目设置会影响移动端性能。

降低或禁用Accelerometer Frequency

Unity 每秒对移动端的加速度计进行几次池操作。如果在应用程序中不会使用,请将其禁用,或者降低其频率,从而提升性能。

如果在移动游戏中不会使用 Accelerometer Frequency,请务必将其禁用。

禁用不必要的 Player 或Quality 设置

在 Player 设置中,对不支持的平台禁用 Auto Graphics API,以便防止生成过多着色器变体。如果应用程序不支持,对较旧的 CPU 禁用 Target Architectures。

在 Quality 设置中,禁用不需要的质量级别。

禁用不必要的物理设置

如果游戏不使用物理设置,请取消选中 Auto Simulation 和 Auto Sync Transforms。否则它们会降低应用程序运行速度,却并无任何可见的好处。

选择正确的帧率

移动端项目必须在帧率和电池续航时间以及热节流之间获得平衡。不需要将设备限值推向 60 fps,可以折衷以 30 fps 运行。Unity 默认移动端为 30 fps。

您也可以通过 Application.targetFrameRate 在运行时动态调整帧率。例如,您甚至可以将缓慢或相对静止的场景降至 30 fps 以下,而将玩游戏时的 fps 设置保留为较高值。

避免使用过多层级

拆分层级!在层级视图中如果游戏对象不需要嵌套,请简化父子化。较少的层级关系将受益于多线程刷新场景中的变换 (Transform)。复杂层级关系会发生不必要的变换 (Transform) 计算以及更多垃圾收集开销。

请参阅优化层级关系和此 Unite 报告了解变换 (Transform) 的最佳实践。

变换一次,而非两次

另外,移动变换 (Transform) 时,使用 Transform.SetPositionAndRotation 可以一次就同时更新位置和旋转。这样可以避免两次修改变换(Transform)的开销。

如果需要在运行时初始化游戏对象,一项简单的优化是在初始化过程中父子化和重新定位 :

GameObject.Instantiate(prefab, parent); 
GameObject.Instantiate(prefab, parent, position, rotation);

有关 Object.Instantiate 的更多详细信息,请参阅脚本 API

假设Vsync 已启用

移动平台不渲染半帧。即使在编辑器中禁用 Vsync (Project Settings > Quality), Vsync 在硬件级别也处于启用状态。如果 GPU 无法足够快地刷新,将保持当前帧,从而有效降低每秒帧数。

以上是关于unity中 navmeshagent的移动禁用不了 怎么办的主要内容,如果未能解决你的问题,请参考以下文章

unity中NavMeshAgent有关知识

Unity | 深入了解NavMeshAgent

Unity NavMeshAgent之:分层路面导航(王者荣耀,英雄联盟中小兵分三路进攻敌方)

Unity 简记--2D移动

UNITY3D:如何将 NavMeshAgent 行走速度设置为 0,但让他向玩家旋转

unity报错The type or namespace name `NavMeshAgent' could not be found.