Unity3d Gizmos.DrawCube在多个立方体相互靠近时显示错误

Unity3d Gizmos.DrawCube在多个立方体相互靠近时显示错误,unity3d,Unity3d,当我使用Gizmos.DrawCube来可视化一些3D瓷砖时,我最终得到了一堆由内而外的立方体。它是从编辑器代码调用的。 以下是呼叫的代码: private void OnDrawGizmos() { foreach (Vector3Int position in positions) { Gizmos.DrawCube(position * Const.tileSize, Const.tileVectorSize); } } 以下是显示错误: 但当_位置仅包

当我使用Gizmos.DrawCube来可视化一些3D瓷砖时,我最终得到了一堆由内而外的立方体。它是从编辑器代码调用的。 以下是呼叫的代码:

private void OnDrawGizmos() {
    foreach (Vector3Int position in positions) {
        Gizmos.DrawCube(position * Const.tileSize, Const.tileVectorSize);
    }
}
以下是显示错误:

但当_位置仅包含1个立方体时,一切都正常

编辑:绘制少量立方体时也会发生这种情况:


知道发生了什么以及如何纠正吗?

这实际上不是一个bug。小控件不会写入深度缓冲区。这意味着(以及您在图像中看到的)小控件被绘制在彼此的顶部,而不管它们是否位于另一个小控件的后面。也许有某种方法可以在Gizmo上启用深度缓冲区写入或zWrite,现在您知道要查找什么了。

在此期间,您可以做的是尝试。这只是在绘制小控件之前,将它们从离摄影机最远的位置排序到最近的位置

private void OnDrawGizmos()
{        
    var sorted = positions.OrderByDescending((x) => Vector3.Distance(Camera.current.transform.position, x));

    foreach (Vector3Int position in sorted)
    {
        Gizmos.DrawCube(position * Const.tileSize, Const.tileVectorSize);
    }
}
这就是它看起来的样子:

您总共绘制了多少个立方体?这会发生在10个立方体上吗?还询问,因为一些bug显然与合并顶点数有关。()是的,我看过这篇文章,但它似乎没有什么关系,因为它也发生在很少有人打电话的情况下。我添加了一个屏幕截图来说明它(只有11画)很好!如果询问者看不清楚,a
使用System.Linq