Size: a a a

2021 January 25

AB

Alex Begali in unity3d.ru
Nikolay Nidvoray
да.
А графика в нем чем рисуется?
источник

NN

Nikolay Nidvoray in unity3d.ru
cамо рисование через CommandBuffer
источник

B

Boris in unity3d.ru
У EventSystem есть такое IsPointerOverGameObject сообщает что поинтер над ui
источник

B

Boris in unity3d.ru
Может этого достаточно будет?
источник

NN

Nikolay Nidvoray in unity3d.ru
спасибо, я пробовал с этим. было иногда не стабильно, но да, работало по большей части
источник

AB

Alex Begali in unity3d.ru
Nikolay Nidvoray
и яне знаю какой UI  будет.
Не знаешь вёрстку или вообще кто-то сторонний им занимается?
источник

NN

Nikolay Nidvoray in unity3d.ru
плагин для ассет стора
источник

AB

Alex Begali in unity3d.ru
Nikolay Nidvoray
спасибо, я пробовал с этим. было иногда не стабильно, но да, работало по большей части
Может сделать прослойку под UI во весь экран? Если попадает на нее, то рейкастим обычным образом сцену, взаимодействие с UI блоком отключаем, если на UI падает сначала, то прослойку игнорируем до окончания инпута
источник

NN

Nikolay Nidvoray in unity3d.ru
да.. тоже вариант, но я чет не думаю что смогу это заимплементить достаточно быстро. у меня можно несколько раскрасок на экран уместить.
источник

NN

Nikolay Nidvoray in unity3d.ru
не хотелось бы выбрасывать старый функционал
источник

AB

Alex Begali in unity3d.ru
Кстати, вообще убирать UI с экрана непосредственно во время рисования довольно удобная фишка, типо чтобы не мешался.
И рисующему удобно и у тебя нет проблемы с кнопками
источник

NN

Nikolay Nidvoray in unity3d.ru
да, спасибо добавлю себе в беклог
источник

NN

Nikolay Nidvoray in unity3d.ru
Alex  Я нашел решение :).
источник

NN

Nikolay Nidvoray in unity3d.ru
1. использую стандартные интерфейсы IBeginDragHandler,
       IEndDragHandler, IDragHandler
2. заимплементил свой inputModule и подменил его на сцене
public class PaintCraftInputModule : StandaloneInputModule
   {
       protected override void ProcessDrag(PointerEventData pointerEvent)
       {
           if (pointerEvent.pointerDrag?.GetComponent<CanvasController>() != null)
           {
               pointerEvent.delta = Vector2.one;
               base.ProcessDrag(pointerEvent);
           }
       }
   }
источник

NN

Nikolay Nidvoray in unity3d.ru
я delta  - не использую "вроде бы" =) у себя,
источник

NN

Nikolay Nidvoray in unity3d.ru
поэтому смотрю, если я дрегаю свой канвас на котором рисую - то я меняю дельту и DragHandler работает норм
источник

AB

Alex Begali in unity3d.ru
Ну вот и отличненько)
источник

ПС

Просто Саня... in unity3d.ru
Вероятно, я совсем поехал на ночь глядя, но я не понимаю, как работает эта индексация прикосновений.
Внизу привожу код. Он очень простенький.

Попробуйте проделать следующее: при запуске приложите один палец. В ответ получите в консоли "0", ну и ошибку, чего следует ожидать, ибо никакого объекта на  индексе 1 нет, так как приложили только один палец.

Приложите второй палец, не отрывая первый. Далее первый палец оторвите и снова коснитесь им экрана.
В консоли будет "0" и "1", так как уже два пальца. Какой вывод делаем?  Когда мы прикладываем второй палец и поднимаем первый, то второй палец не получает индекс 0, а остается при 1, а первый палец при новом прикладывании получает, видимо, свой изначальный индекс 0. Вроде бы.

Теперь приложите один палец и подвигайте, будете получать в консоли индекс "0" и ошибку, следует ожидать. Приложите второй палец, не отрывая первый и подвигайте первым. Теперь "0" и "1". Ибо два пальца.
Поворотный момент. Оторвите первый палец, не отпуская второй и подвигайте вторым (напоминаю, что второй при отрыве первого не получает индекс 0), но тут вы увидите в консоли "0" и ошибку. То есть 0 индекс присвоен прикосновению, а 1 индекс отсутствует, хотя выше мы убедились, что все как раз наоборот. Я недавно работаю с юнити и, может, каких секретов не знаю, но это очень странно и бесит.
источник

ПС

Просто Саня... in unity3d.ru
источник

AB

Alex Begali in unity3d.ru
Просто Саня
Вероятно, я совсем поехал на ночь глядя, но я не понимаю, как работает эта индексация прикосновений.
Внизу привожу код. Он очень простенький.

Попробуйте проделать следующее: при запуске приложите один палец. В ответ получите в консоли "0", ну и ошибку, чего следует ожидать, ибо никакого объекта на  индексе 1 нет, так как приложили только один палец.

Приложите второй палец, не отрывая первый. Далее первый палец оторвите и снова коснитесь им экрана.
В консоли будет "0" и "1", так как уже два пальца. Какой вывод делаем?  Когда мы прикладываем второй палец и поднимаем первый, то второй палец не получает индекс 0, а остается при 1, а первый палец при новом прикладывании получает, видимо, свой изначальный индекс 0. Вроде бы.

Теперь приложите один палец и подвигайте, будете получать в консоли индекс "0" и ошибку, следует ожидать. Приложите второй палец, не отрывая первый и подвигайте первым. Теперь "0" и "1". Ибо два пальца.
Поворотный момент. Оторвите первый палец, не отпуская второй и подвигайте вторым (напоминаю, что второй при отрыве первого не получает индекс 0), но тут вы увидите в консоли "0" и ошибку. То есть 0 индекс присвоен прикосновению, а 1 индекс отсутствует, хотя выше мы убедились, что все как раз наоборот. Я недавно работаю с юнити и, может, каких секретов не знаю, но это очень странно и бесит.
Как-то тоже пытался разобраться в этой теме
Пальцам присваиваются индексы по возрастанию. При отрывании одного пальца его индекс освобождается и его займет следующий прикоснувшийся палец.
Например есть нажать тремя пальцами, то индексы будут 0, 1, 2. При отрыве пальца с индексом 1 и возвращении его на экран он опять получит первый свободный индекс - 1 (0 и 2 были заняты).
Если оторвать пальцы с индексами 0 и 1, а потом вернуть только один палец, то индексы будут 0 и 2. И т.д.
Если пять пальцев 0, 1, 2, 3, 4 - то при отрыве 0, 1 и 3 и возвращении одного пальца индексы будут 0, 2 и 4
источник