找回密码
 立即注册
查看: 748|回复: 0

Unity寻路插件(A* Pathfinding)入门教程六:A* 面板

[复制链接]
发表于 2020-11-25 08:58 | 显示全部楼层 |阅读模式
本系列的教程文章基于 A*Pathfinding Project 4.2.8的官网教程翻译,每一章节的原文地址都会在教程最下方给出。
A*面板其实就是整个插件最核心的组件下 AstarPath,之所以叫A*主要是因为约定命名方便查找,本篇教程会概述一下 AstarPath的各种参数和设定(一下我们统一称为A*)。那么先来看下A*面板长什么样子:
检视面板里大概分为5个区域:
    Graph: 持有场景里所有的寻路 Graph。Setting:各种寻路和编辑器设定。Save&Load:允许你从文件里保存和加载寻路数据。Optimization:各种优化编译选项。About:提供一些版本升级和文档链接。
还有一个Show Graphs切换按钮可以控制是否在场景视窗里看到graphs,最后还有一个Scan按钮是用来重新计算所有 graphs的。在编辑器模式下graphs是不会自动进行扫描的,只有手动点击这个按钮才可以或者使用快捷键。alt+cmd+s on Mac ,alt+ctrl+s on Windows (有可能因为键位冲突导致快捷键不可用)
视图(Graphs)

视图区域可以看到本场景里所有的视图信息。你可能会用到多个视图,那么这些都保存在A*面板里面。(你不需要创建多个A*面板,即不用绑定多个 AstarPath组件)如果你点击 Add New Graph 你就可以看到一个包含所有可创建的graphs的列表。
每个graph的右边有四个图标:

    眼睛:显示和隐藏场景视窗里的graph,当隐藏的时候,眼睛会变为红色。笔:重命名这个graph,这个在你拥有多个graph的时候比较有用,可以帮你搞清楚哪个是哪个。i:一些简略信息告诉你现在有多少个nodes在graph里面。注意编辑器下你是必须先扫描了之后才有信息的额。x:删除graph。
查看一下各自的graph面板来获取每个graph的详细设置。
设置(Setting)

Pathfinding
    Thread Count 寻路可以使用几个线程。
如果你的计算机拥有2+的核数,可以使用多线程寻路,这可以减少寻路消耗对帧率和性能的影响,这里的多线程不是Unity线程里的协程。
不过最终会根据机器的硬件信息自动的调整线程数量,不如你的机器核数不够或者内存不足512,都会被强制还原到不适用多线程的方式。
所以这里会推荐使用 Auto的方式,让运行时自动去适配最好的线程数量,以防止你设定的核数在不同的设备运行的时候不满足条件而引发BUG或者性能浪费。
如果你只有1-2个角色需要寻路的话也没必要使用多核,一般来说只有不同的角色进行不同寻路的时候才会调用多线程,如果你的线程数量太多而用不到就造成了资源浪费。
还要注意的是,寻路的多线程脚本要谨慎修改,搞不好就会出现各种奇怪的错误,甚至导致整个寻路功能停止工作。
    Max Nearest Node Distance 搜索节点的最大距离。
当你进行最近节点搜索的时候,这里会限定最大的搜索范围。主要用于寻找一个不可到达的点的时候,在它周围选取替代点的范围。如果仍然搜索不到,寻路就会返回失败。
    heuristic 启发函数
启发函数其实就是A*里 的H值,它表明了一个节点到目标点的成本。不同的启发函数会决定如何选择路径。
    Heuristic Scale 启发函数的使用规模
如果设置为小于1,那么寻路会寻找更多的格子(慢!),如果是0就会退化到dijkstra算法,就相当于把 heuristic  选项设置为None。如果设置为大于1将会提高寻路效率,因为它扩展搜索的格子比较少,响应的路径也不一定会是最优。
Advanced
    Heuristic Optimization 如果启用的启发函数,那么如何优化中心点。Batch Graph Updates 优化更新批次来提高性能。Update Interval 每个更新批次的最小时间(单位:秒)Prioritize Graphs  graphs的更新顺序Priority Limit 如果Prioritize Graphs启用了 则限定它的距离。Full Get Nearest Node Search  对所有graph进行完整搜索Scan on Awake 如果勾选,则会在Awake的时候进行数据扫描。
Debug
    Path Logging 调试信息级别Graph Coloring  场景视窗里节点绘制的颜色设定。Show Search Tree 如果启用了 节点将画一条线连接它的父节点Show Unwalkable Nodes 是否显示不可行走的节点
Colors
设定场景视窗里各种绘制的颜色值。
Tag Names
快捷设定各种tag值。
Editor
打开或者关闭时候的动画
保存和加载(Save & Load)

这个区域让你可以保存缓存数据,或者加载缓存数据。你可以生成一个cache文件来减少启动时候的长时间计算。
Documentation
优化(Optimization)

编译器指令可以让编译器在编译代码的时候 排除或者包含一些代码。它允许一些非常强烈的变化,比如:移除或者添加class的某些fields,或者在没有任何运行时开销的情况下改变某些方法的逻辑。这几个不同的选项可以让你开启或者关闭某些特性来减少内存使用,提高性能表现。Documentation编译器指令可以让编译器在编译代码的时候 排除或者包含一些代码。它允许一些非常强烈的变化,比如:移除或者添加class的某些fields,或者在没有任何运行时开销的情况下改变某些方法的逻辑。这几个不同的选项可以让你开启或者关闭某些特性来减少内存使用,提高性能表现。详情参考:
关于(About)

展示了当前的版本情况,和文档主页的链接。
这里的链接总是会指向最新的版本文档,如果你想看旧版本的,可以点击Show Older Versions 或者下载页面:https://www.arongranberg.com/astar/download

原文链接:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-26 03:35 , Processed in 0.105556 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表