Создание поля в изображении пользовательского интерфейса с помощью средства визуализации линий не работает - PullRequest
0 голосов
/ 12 апреля 2019

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

enter image description here

компонент рендеринга строки прикреплен к объекту redkey1spawn.

Пробовал код derHugo, он работает, но каким-то образом он выходит за пределы экрана

enter image description here

1 Ответ

0 голосов
/ 12 апреля 2019

Ваша проблема в том, что LineRenderer работает с координатами в Unity Units.

A Screenspace Overlay canvas имеет масштабирование размера пикселя, поэтому ширина и высота (в единицах Unity) совпадают с шириной и высотой (в пикселях) окна.

→ после добавления4 точки

0,  0, 0
2,  0, 0
2, -2, 0
0, -2, 0

в мировом пространстве, это означает, что они на холсте будут использовать, например, 2px, -2px, 0px → очень маленький.

Вы можете, например, умножить размеры на высоту или ширину изображения./canvas.

private void Start()
{
    var lineRenderer = GetComponent<LineRenderer>();
    var image = GetComponentInParent<RectTransform>();

    // get the Unity worldspace coordinates of the images corners
    // note: to get the scales like that ofcourse only works
    // if the image is never rotated!
    var worlsCorners = new Vector3[4];
    image.GetWorldCorners(worlsCorners);
    var imageWorldSize = new Vector2(Mathf.Abs(worlsCorners[0].x - worlsCorners[2].x), Mathf.Abs(worlsCorners[1].y - worlsCorners[3].y));

    var positions = new Vector3[lineRenderer.positionCount];

    var pointnum = lineRenderer.GetPositions(positions);
    for (var i = 0; i < pointnum; i++)
    {
        positions[i] = positions[i] * imageWorldSize.x;
    }

    lineRenderer.SetPositions(positions);
}

Примечание , однако я даже не уверен, что вы увидите этот LineRenderer, так как это не компонент пользовательского интерфейса, я уверен, чтоНаложение ScreenSpace сделает каждое изображение и т. Д. Всегда рендерингом поверх него.

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