Как сделать чтобы клавиатура не нажималась

Как сделать чтобы клавиатура не нажималась

lang-php

22

13 мая 2018, 04:00

Практикуюсь в Unity и на данный момент хочу создать пианино.

Как сделать, чтобы созданные (UI - buttons) кнопки срабатывали после прикосновения пальца, то есть, можно было водить по набору кнопок не отпуская пальца от экрана и при этом они воспроизводили заданный мною скрипт?

На данный момент, чтобы кнопка воспроизвела мой скрипт, нужно отпустить палец именно в её зоне.

Answer 1

Унаследоваться от Button и реализовать OnPointerDown:

public class MyBestButton : Button { [...] public override void OnPointerDown(PointerEventData eventData) { base.OnPointerDown(eventData); if (eventData.button != PointerEventData.InputButton.Left) return; // здесь делаем всякое разное } }

Ну или через AddComponent навесить триггер, если не хотите классов создавать:

EventTrigger trigger = myButton.gameObject.AddComponent<EventTrigger>(); var pointerDown = new EventTrigger.Entry(); pointerDown.eventID = EventTriggerType.PointerDown; pointerDown.callback.AddListener(delegate(BaseEventData arg0) { // тут делаем всякое разное }); trigger.triggers.Add(pointerDown);

Answer 2

Можно посмотреть в сторону реализации интерфейсов Event System. В вашем случае это может быть IPointerEnterHandler.

Т.е. классу задаётся наследование от данного интерфейса, пишется реализация этого метода, а сам класс вешается на объект-клавишу.

Когда курсор будет входить в область кнопки - у класса будет вызываться этот метод. Внутри метода вы можете проверить зажата ли сейчас кнопка мыши и если зажата - произвести действие.

Answer 3

Можете рассмотреть альтернативный метод, как бы велосипед, достаточно в ваш скрипт добавить использование интерфейса и всё.

public class Keys: MonoBehaviour, IPointerDownHandler, IPointerUpHandler { public AudioClip Sound; public AudioSource source; // ну или сразу запихите этот аудиоСурс в поле, дабы не вызывать GetComponent. public Image image; // можете такое добавить, если хотите регулировать цвет самостоятельно, без использования компонента Button void Start(){ source = GetComponent<AudioSource>(); } public void OnPointerDown(PointerEventData eventData){ source.PlayOneShot(Sound); image.color = Color.yellow; } public void OnPointerUp(PointerEventData eventData){ // это опционально image.color = Color.white; } }

Рекомендую вам не использоваться AddComponent так как это трудоёмкий процесс добавления компонента на объект.

Главная IT Вопросы c# Как сделать чтобы кнопка нажималась при прикосновении? unity

Как сделать чтобы клавиатура не нажималась 427
Как сделать чтобы клавиатура не нажималась 375
Как сделать чтобы клавиатура не нажималась 124
Как сделать чтобы клавиатура не нажималась 420
Как сделать чтобы клавиатура не нажималась 31
Как сделать чтобы клавиатура не нажималась 732
Как сделать чтобы клавиатура не нажималась 581
Как сделать чтобы клавиатура не нажималась 235
Как сделать чтобы клавиатура не нажималась 356
Как сделать чтобы клавиатура не нажималась 934
Как сделать чтобы клавиатура не нажималась 273
Как сделать чтобы клавиатура не нажималась 753
Как сделать чтобы клавиатура не нажималась 11
Как сделать чтобы клавиатура не нажималась 791
Как сделать чтобы клавиатура не нажималась 657
Как сделать чтобы клавиатура не нажималась 873
Как сделать чтобы клавиатура не нажималась 940
Как сделать чтобы клавиатура не нажималась 169
Как сделать чтобы клавиатура не нажималась 98

Похожие записи:

  • Открытки с любовными пожеланиями
  • Поздравление в стихах подругу с бракосочетанием
  • Поздравления днем рождения тарас
  • Своим руками детская мебель
  • Схема вязания спицами кофты реглан для ребенка