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