游戏开发小结——使用小控件在运行unity3d项目实时显示网格
·
游戏开发小结——使用小控件在运行unity3d项目实时显示网格
我正在开发一个类似于地下城的游戏,使用程序生成的网格和基于网格的移动系统。
我需要检查我的控制器是否正在使用正确的单元格,以及我的角色网格是否被适当地定位,所以我尝试使用运行模式(play-mode)网格进行检查。

Unity在编辑器中没有为运行模式(play-mode)提供网格可视化器,因此您必须使用自己的代码系统。
主要有三种主要可能性:
- 用调试(debug)网格材质球替换地面的材质球(material)
- 编写一个着色器(shader)
- 使用Gizmos
在我的情况下,我决定使用Gizmos,因为我只对编辑器运行模式(play-mode)感兴趣。逻辑很简单:创建一个Monobehaviour并添加一个OnDrawGizmos函数。如果您想要,也可以将此函数添加到场景中的任何其他Monobehaviour中。然后,我们将不断迭代并以网格格式绘制线条。
public class GridDraw: Monobehaviour {
public int minX;
public int maxX;
public int minY;
public int maxY;
void OnDrawGizmos() {
Gizmos.color = Color.white;
Vector3 pos0 = new Vector3();
Vector3 pos1 = new Vector3();
for (int i = -minX; i < maxX; i++)
{
pos0.x = i;
pos0.z = -minY;
pos1.x = i;
pos1.z = maxY;
Gizmos.DrawLine(
pos0,
pos1
);
/*for (int j = 0; j < 100; j++) {
}*/
}
for (int i = -minY; i < maxY; i++)
{
pos0.x = -minX;
pos0.z = i;
pos1.x = maxX;
pos1.z = i;
Gizmos.DrawLine(
pos0,
pos1
);
}
这就是我们的网格!我还会在我的角色所在的当前方格上画一个正方形。将此代码添加到您的控制器脚本中。
void OnDrawGizmos() {
Gizmos.color = Color.cyan;
Vector3 pos = new Vector3(Mathf.RoundToInt(transform.position.x), 0f, Mathf.RoundToInt(transform.position.z));
Gizmos.DrawCube(pos + new Vector3(-0.5f, 0.5f, -0.5f), new Vector3(1f, 1f, 1f));
}
添加的Vector3偏移量将位置偏移以使其位于单元格中心,以便适当地绘制正方形
更多推荐

所有评论(0)