Если это только для отладки, я бы рекомендовал использовать 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;
}
Я только на смартфоне, поэтому он не может быть скопирован, но я думаю, вы поймете идею;)