Страница 1 из 1

Несколько мониторов и UI

СообщениеДобавлено: 20 ноя 2017, 14:54
denprox
Доброго времени суток! Подскажите, кто ни будь сталкивался с такой проблемой ? Делаю 2 камеры, для второй камеры создаю Canvas с указанием этой камеры (Render Camera). На канву кидаю Slider, затем подключаю скрипт

Синтаксис:
Используется csharp
            for (int i = 0; i < Display.displays.Length; i++)
            {
                Display.displays[i].Activate();
            }
 


Который активирует все мониторы. И тут начинаются проблемы: в режиме редактора, все работает, а именно если начать двигать ползунок Слйдера, он двигается как и положено, но если проект забилдить, то в результате при клике на Слайдер, он устанавливается в Максимальное положение и больше ни чего с ним не сделать ( мышкой), до тех пор, пока мышка на втором мониторе. Если нажать на ползунок и держать, при этом передвинуть мишку на первый монитор, слайдер начнет двигаться.

Надеюсь понятно описал )) Если интересно, могу скинуть проект.

Re: Несколько мониторов и UI

СообщениеДобавлено: 21 ноя 2017, 09:45
denprox
Нашел такой же вопрос на забугорном форуме : [UI] [SLIDER] [MULTIDISPLAY] SLIDERS DO NOT WORK OR ACT INCORRECTLY ON DUAL DISPLAYS

Человек пишет, что решил проблему так:

I´m solved this problem using "RelativeMouseAt" on "ScreenPointToLocalPointInRectangle". Like this:

Синтаксис:
Используется csharp
// Update the slider's position based on the mouse.
void UpdateDrag(PointerEventData eventData, Camera cam)
{
RectTransform clickRect = m_HandleContainerRect ?? m_FillContainerRect;
if (clickRect != null && clickRect.rect.size[(int)axis] > 0)
{
Vector2 localCursor;
if (!RectTransformUtility.ScreenPointToLocalPointInRectangle(clickRect, Display.RelativeMouseAt(eventData.position), cam, out localCursor))
return;

localCursor -= clickRect.rect.position;

float val = Mathf.Clamp01((localCursor - m_Offset)[(int)axis] / clickRect.rect.size[(int)axis]);
normalizedValue = (reverseValue ? 1f - val : val);
}
}



Но что это за решение такое, я не пойму. Единственное что я нашел, это ссылку на Github где упоминается идентичный кусок кода: ссылка
Предполагаю, что это модифицированный Слайдер, но как проверить все это дело не знаю.