Рисование прямоугольника с цветом и толщиной в OnGUI - PullRequest
0 голосов
/ 07 февраля 2019

Я хотел бы нарисовать рамку / прямоугольник в OnGUI, чтобы отобразить определенную область для целей отладки.

Этот прямоугольник должен отображаться с определенной «толщиной» / шириной и цветом линии.

Пока что я нашел только GUI.Label и GUI.Box, которые кажутся неадекватными для этого.

Спасибо!

1 Ответ

0 голосов
/ 07 февраля 2019

Если это только для отладки, я бы рекомендовал использовать 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 для его показа всегда

Обратите внимание, чтоэто делается в WorldSpace, поэтому если вы хотите, чтобы вектор размера и т. д. вращался вместе с объектом, который можно обернуть между

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

Я только на смартфоне, поэтому он не может быть скопирован, но я думаю, вы поймете идею;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...