5-4 清理代码

  在上一章中,我们通过计算一个地图单元在数组中的下标,将其分配到对应的地图块中。不过现在项目中依然存在很多我们不需要的代码,在这一章中,我们将清理这些代码。
  首先在HexGrid中清除掉gridCanvashexMesh这两个对象,还有与其相关的代码。如下:

HexGrid.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class HexGrid : MonoBehaviour
{


//private Canvas gridCanvas;
//private HexMesh hexMesh;

private void Awake()
{


//hexMesh = GetComponentInChildren<HexMesh>();
//gridCanvas = GetComponentInChildren<Canvas>();


}



//private void Start()
//{
// hexMesh.Triangulate(cells);
//}



//public void Refresh()
//{
// hexMesh.Triangulate(cells);
//}



private void TouchCell(Vector3 position)
{


//hexMesh.Triangulate(cells);
}
}

  因为我们删除了Refresh方法,所以在HexMapEditor中不能再调用它了。

HexMapEditor.cs
1
2
3
4
5
6
private void EditCell(HexCell cell)
{
cell.color = activeColor;
cell.Elevation = activeElevation;
//hexGrid.Refresh();
}

  回到Unity中,因为我们删除了掉gridCanvashexMesh,所以在场景中我们不再需要Hex Grid CanvasHex Mesh这两个对象,删除后入下图所示:

  清理完成后,运行游戏。我们发现Game窗口中地图生成并没有发生变化,但是Hierarchy窗口中的层级关系已经发生了变化。HexGrid生成地图块,再由每个地图块的实例生成地图单元和其相对应的UI。如下图:

  经过观察我们还发现一个问题,地图单元的坐标显示UI还存在一些问题:我们一开始设置的标签宽度是5,这足够显示两个字符。在较小的地图上刚好用完,但现在我们可以获取到“-10”这样有三个字符的坐标,这样一来字符无法相匹配并有断层。把UI的宽度增加到10或更多来解决这个问题。

  现在我们终于可以创建一个比之前章节中尺寸更大的底图了!虽然生成地图需要花费比原来尺寸较小地图更长的时间,不过生化池呢个完成后,我们就拥有了一个尺寸跟大的地图。因为删除掉一些代码的原因,我们的地图编辑器功能不再起作用了,下一章中我们将解决这个问题。

Github代码