Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

tang-xiaolong/MapGridInUnity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

22 Commits

Repository files navigation

English | 简体中文

License

MapGridInUnity

一个通用的游戏地图解决方案

设计思路解析

通用游戏地图解决方案设计解析

主要模块

最小堆最大堆模块

该模块主要是为后续寻路算法做支持的,其内部使用了列表作为实际存储容器,列表元素需要实现IComparable接口,算法通过接口内的CompareTo方法对堆内元素做排序调整。

通用的地图模块

该模块做到了将地图数据与地图显示完全抽离,模块中抽离了一系列地图相关的接口,比如IMapGrid,IMapShow, INode, IPathNode,INodeEntity等等,每个接口负责定义实现类应该要有什么功能。本模块借助接口来实现地图模块的通用性,模块中各个类只依赖接口内方法,类型则通过依赖注入的形式来设置。

  • IMapGrid: 定义了地图数据类的常用的属性和必要的方法。

  • IMapShow: 定义了地图显示相关的内容,比如设置地图节点GameObject,绑定地图数据,获取显示对象与位置等等。

  • INode: 定义了一个最简单的节点应该要包含什么内容。

  • IPathNode: 定义了可寻路的节点应该包含什么内容,该接口实现INode的全部内容,并在该基础上增加了寻路的一些必要内容,比如代价值,父节点,是否可通行等等。

  • INodeEntity: 定义了节点的显示接口,比如高亮,还原等等。

寻路模块

该模块中包含了普通的A星寻路算法和经过最小堆优化的A星算法,在优化算法中,引入了最小堆来快速从Open列表中取出代价最小的节点,引入SessionId来加快节点是否在Open列表与Close列表的判断。

Gif示例

创建生成地图配置

创建地图配置

创建地图

创建地图

地图起点是否需要偏移

地图是否需要偏移

寻路

寻路

地图高亮

地图高亮

示例图

六边形地图高亮范围内的格子

六边形地图高亮范围内的格子

六边形地图高亮指定方向上的格子

六边形地图高亮扇形范围内的格子

网格地图高亮范围内的格子

网格地图高亮指定方向上的格子

网格地图高亮扇形范围内的格子

六边形地图寻路

四方向网格地图寻路

八方向网格地图寻路

系统类图

MapGridInUnity类图.drawio

路线图

  • 增加地图模块的结构类图。
  • 图文或者视频对整个模块做拆解。
  • 增加寻路算法测试场景。
  • 增加TileMap示例。
  • 基于Unity UI Elements的地图编辑器。

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /