代码之家  ›  专栏  ›  技术社区  ›  tmighty

在OnGUI中绘制具有颜色和厚度的矩形

  •  1
  • tmighty  · 技术社区  · 5 年前

    此矩形应以一定的“厚度”/线宽和颜色显示。

    1 回复  |  直到 5 年前
        1
  •  0
  •   derHugo    5 年前

    如果只是为了调试,我建议使用 Gizmos.DrawWireCube

    注意 :仅在 SceneView GameView 只有

    private void OnDrawGizmosSelected()
    {
        // Draw a yellow cube at the transform position
        var color = Gizmos.color;
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireCube(transform.position, new Vector3(1, 1, 1));
        Gizmos.color = color;
    }
    

    仅当选定对象或 OnDrawGizmos

    var matrix = Gizmos.matrix;
    Gizmos.matrix = transform.localToWorldMatrix;
    
    //...
    
    Gizmos.matrix = matrix;
    

    不幸的是,没有选择改变线的厚度。。。

    你可以通过简单地画4个普通立方体来克服这个问题 Gizmos.DrawCube 形成一个矩形。可能是这样的

    private void OnDrawGizmos()
    {
        DrawDebugRect(new Vector2(0.5f, 0.3f), 0.05f);
    }
    
    private void DrawRect(Vector2 size, float thikness)
    {   
        var matrix = Gizmos.matrix;
        Gizmos.matrix = transform.localToWorldMatrix;
    
        //top cube
        Gizmos.DrawCube(Vector3.up * size.y / 2, new Vector3(size.x, thikness, 0.01f);
    
        //bottom cube
        Gizmos.DrawCube(Vector3.down * size.y / 2, new Vector3(size.x, thikness, 0.01f);
    
        //left cube
        Gizmos.DrawCube(Vector3.left * size.x / 2, new Vector3(thikness, size.y, 0.01f);
    
        //right cube
        Gizmos.DrawCube(Vector3.right * size.x / 2, new Vector3(thikness, size.y, 0.01f);
    
        Gizmos.matrix = matrix;
    }
    

    我只使用智能手机,所以可能无法复制,但我想你会明白的;)