Unity3D C#:绘制六边形的边框

时间:2014-11-17 01:39:37

标签: c# unity3d

我对Unity或C#甚至是任何GUI连接都相当新,但是我试图制作一个简单的六边形网格,我遵循了这个教程:http://forum.unity3d.com/threads/procedural-hexagon-terrain-tutorial.233296/并且它创建了很好的六边形块。现在问题是我想为每个十六进制做一个边界线。我试图使用ToonShader但它似乎不适用于这种结构。我还尝试在每个十六进制中创建一个LineRenderer,包含它的边缘点的坐标,但是在经历了一些潜伏之后,我意识到我应该为每个十六进制使用6个LineRenderers。这是我的问题,使用这么多LineRenderers是否有意义?有没有更方便(我确定有)或更漂亮的方式来做到这一点? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

LineRenderer支持多行,:)因此每个十六进制只需要1个LineRenderer。你可以这样做:

LineRenderer lineRenderer = ... ; // Add or get LineRenderer component to game object
lineRenderer.SetVertexCount(7);  // 6+1 since vertex 6 has to connect to vertex 1
for (int i = 0; i < 7; i++) {
    Vector3 pos = ... ; // Positions of hex vertices
    lineRenderer.SetPosition(i, pos);
}

虽然这可能效率不高,具体取决于你有多少瓷砖。如果你有很多但不是太多,你可以为所有的瓷砖创建一个LineRenderer。如果你有很多它们,那么将地图细分为包含X x Y个tile的区域,并为每个区域生成一个LineRenderer。另请注意,如果使用这些方法,相邻的六边形可以共享线条。

答案 1 :(得分:0)

如果你不介意花费大约20美元,Vectrosity是一个很好的Unity插件,可以让你画线。我在使用Unity制作的图形绘制应用程序中使用它来在节点之间绘制顶点。