GithubHelp home page GithubHelp logo

mapgridinunity's Introduction

English | 简体中文

License

MapGridInUnity

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

设计思路解析

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

主要模块

最小堆最大堆模块

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

通用的地图模块

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

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

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

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

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

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

寻路模块

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

Gif示例

创建生成地图配置

创建地图配置

创建地图

创建地图

地图起点是否需要偏移

地图是否需要偏移

寻路

寻路

地图高亮

地图高亮

示例图

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

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

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

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

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

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

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

六边形地图寻路

四方向网格地图寻路

八方向网格地图寻路

系统类图

MapGridInUnity类图.drawio

路线图

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

mapgridinunity's People

Contributors

tang-xiaolong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.