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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение denprox 20 ноя 2017, 14:54

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

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


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

Надеюсь понятно описал )) Если интересно, могу скинуть проект.
Аватара пользователя
denprox
UNIт
 
Сообщения: 107
Зарегистрирован: 25 май 2017, 09:06
  • Сайт

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

Сообщение denprox 21 ноя 2017, 09:45

Нашел такой же вопрос на забугорном форуме : [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 где упоминается идентичный кусок кода: ссылка
Предполагаю, что это модифицированный Слайдер, но как проверить все это дело не знаю.
Аватара пользователя
denprox
UNIт
 
Сообщения: 107
Зарегистрирован: 25 май 2017, 09:06
  • Сайт


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 28