GridPro2 初步踩坑
发表于2018-03-06
大多数情况下新版本是优于初代版本的,GridPro也不例外,在使用新版本GridPro2时但是也会需要一些问题,下面就将遇到的GridPro2问题分享给大家,希望可以让大家少趟坑。
在本篇使用GridPro2过程中,只需要用到这么几个功能
- 地图生成
- 地图映射索引
- AStar寻路算法(这个我自己也可以写,所以不是必须的)
GridPro2代在可视化上做了不少功夫。
并且把Shape和Map做成组件式装配的可视化开发了,这里方便了不少。
下面就以做一个可以响应鼠标点击事件的地图的最基本功能为目标。
参考文档:
1.http://gamelogic.co.za/grids-2/documentation/building-a-simple-rect-or-hex-grid/
2.http://gamelogic.co.za/grids-2/documentation/working-with-grid-behaviours-and-grid-event-triggers/
官方文档有的就不翻译了,直接说遇到的问题:
要做的是2D TileCell
而不是1D或3D或MeshCell
1.你自己定义的GridCell(我的是MyGridCell),一定要继承自TileCell
2.你自己定义的GridBehavior(我的是MyGridBehavior),泛型参数一定是GridPoint2和TileCell
注意这里,你既不能用一个泛型参数,比如只提供TileCell
也不能用你自己的MyGridCell作为泛型参数,这是因为在初始化函数有个函数
private IEnumerable<GridBehaviour<TCell>> GetGridBehaviours()
他会把类TileGridBuilder指定的泛型参数TileNode作为其参数,也就是说,GetGridBehaviours里面的调用
GetComponents<GridBehaviour<GridPoint2, TCell>>();
只能识别泛型参数为GridPoint2 和 TileCell的,而不能识别其子类 比如 MyGridBehavior。这就会导致函数找不到你自定义的GridBehavior
3.千万不要重载或者覆盖__InitPrivateFields 方法,当然我的错误是源于2,我一开始用的是只有一个泛型的GridBehavior,这是不对的,应该用两个泛型那个。
4.我买的插件美术资源不是纯正方形的,而是长方形的下方256*256的区域,是基本图画区,但是某些建筑会高出一部分,也就是说整张图是256*384的。
例如:
所以会出现一个问题,就是当你点击的时候,图片映射会有偏差,有多种解决 方案,我选择了一个最偷懒的方式,把图片的Povit设置为0.5,0.34即可。