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

本文关键字:边框 六边形 绘制 Unity3D | 更新日期: 2023-09-27 18:30:38

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

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

LineRenderer 支持多行,:)所以每个十六进制只需要 1 个线渲染器。您可以这样做:

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);
}

尽管这可能不是很有效,具体取决于您拥有多少瓷砖。如果有很多,但不是太多,则可以为所有图块创建一个线渲染器。如果你真的有很多,那么将地图细分为包含 X x Y 图块的区域,并为每个区域生成一个 LineRenderer。另请注意,如果使用这些方法,相邻的十六进制可以共享行。

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