InputField чтоб только на него нажатия на кнопки действовали

Общие вопросы о Unity3D

InputField чтоб только на него нажатия на кнопки действовали

Сообщение Orcan 22 апр 2017, 15:15

Привет всем у меня проблемка! В игре у меня сделано на SPACE выводить меню , на Q у меня выключение музыки срабатывает, и тд. остальные кнопки. В игре есть ситуация когда выводится Поле для ввода ( InputField ) и когда я там текст набираю например слова где встречается Q или на SPACE, у меня вылетает меню и выключается музыка, нужно чтобы ничего другое не работало когда я пишу в InputField. Есть решение ставить на каждую кнопку проверку через IF типа если этот InputField вылез,то кнопки не срабатывают для вывода меню или выключения музыки , я думаю этот путь плохой дабы придётся менять все коды и вписывать проверку. Есть ли метод в InputField который чтоб кнопки действовали только на него, я что то не нашёл такого метода.
Orcan
UNITрон
 
Сообщения: 191
Зарегистрирован: 25 сен 2016, 04:22

Re: InputField чтоб только на него нажатия на кнопки действовали

Сообщение nik26 23 апр 2017, 13:41

без вписывания проверок никак, но есть простые решения:
Синтаксис:
Используется csharp
if (нажатие клавиши) {
    if (EventSystem.current.currentSelectedGameObject.GetComponent<InputField>() == null) {
        //действие
    }
}
 



если для частых проверок то нужно такой костыль на каждый inputfield:
Синтаксис:
Используется csharp
    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;

    public class inputfieldSelectionDetection : MonoBehaviour, IDeselectHandler, ISelectHandler
    {
        public static bool inputfield_selected = false;
        public void OnDeselect(BaseEventData data)
        {
            inputfield_selected = false;
        }
        public void OnSelect(BaseEventData eventData)
        {
            inputfield_selected = true;
        }
    }

и тогда проверка будет выглядеть:
Синтаксис:
Используется csharp
if (нажатие клавиши) {
    if (!inputfieldSelectionDetection.inputfield_selected) {
        //действие
    }
}
 
Аватара пользователя
nik26
UNIт
 
Сообщения: 110
Зарегистрирован: 22 июн 2013, 02:13

Re: InputField чтоб только на него нажатия на кнопки действовали

Сообщение Orcan 23 апр 2017, 22:45

да уж не мало кода оказалось =) СПС
Orcan
UNITрон
 
Сообщения: 191
Зарегистрирован: 25 сен 2016, 04:22


Вернуться в Общие вопросы

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

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