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

Проблемка с GetKeyUp

СообщениеДобавлено: 08 окт 2011, 14:42
VitaliyCh
Здравствуйте! Input.GetKeyUp(KeyCode.X) в среде Unity обрабатывает клавишу "x" а после компиляции и запуска приложения клавиша не обрабатывается. Собирал под MacOS. Может кто-нибудь сталкивался с аналогичной проблемой?

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 13:21
bomberest
Т.е. в редакторе работает, а после билда не работает, или что?

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 13:38
Zaicheg
Да, с маками такое распостранено. Само нажатие срабатывает (проверяется через Input.anyKeyDown), но код получается не тот. Причину не выяснял, проблему не решал.

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 13:53
Neodrop
Input проверяется в Update ?

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 15:55
VitaliyCh
Да, с маками такое распостранено. Само нажатие срабатывает (проверяется через Input.anyKeyDown), но код получается не тот. Причину не выяснял, проблему не решал.

Zaicheg за anyKeyDown спасибо. Посмотрю хоть, что за коды приходят.

Input проверяется в Update ?

Да проверка в Update на скрипте камеры висит.

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 16:09
VitaliyCh
Input.anyKeyDown к сожалению не код клавиши возвращает, а булевое значение.

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 16:09
Neodrop
Можно попробовать проверить не через Input а через Event в OnGUI

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 16:55
VitaliyCh
Neodrop писал(а):Можно попробовать проверить не через Input а через Event в OnGUI

Neodrop cпасибо. В приведенном ниже коде получаю нажатие клавиш. Но мне кажется проверять стринги при нажатии на клавишу слишком расточительно. Пробовал вот так: e.keyCode == 167 выдает ошибку несоответствия типов переменных.
Синтаксис:
Используется csharp
        void OnGUI()
        {
            Event e = Event.current;
//        if (e.isKey)
//            print("Detected key code: " + e.keyCode);
                       
         if (e.keyCode.ToString() == "167")
            print("Pressed \"x\" key.");
       
         if (e.keyCode.ToString() == "166")
            print("Pressed \"z\" key.");
       
    }

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 17:03
Neodrop
Я что-то не понял, при чём тут стринги?
Сравните KeyCode с KeyCode
Вроде так :

if (e.keyCode == KeyCode.X)
print("Pressed \"x\" key.");

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 09 окт 2011, 17:52
VitaliyCh
Neodrop писал(а):Я что-то не понял, при чём тут стринги?
Сравните KeyCode с KeyCode
Вроде так :

if (e.keyCode == KeyCode.X)
print("Pressed \"x\" key.");



Эта конструкция не ловит нажатие на клавишу "x" т.е. условие = false
Cделал небольшой тест: e.keyCode.ToString() == "167", а вот KeyCode.X.ToString() == "X"

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 10 окт 2011, 09:17
Neodrop
Эта конструкция не ловит нажатие на клавишу "x" т.е. условие = false
Cделал небольшой тест: e.keyCode.ToString() == "167", а вот KeyCode.X.ToString() == "X"


:-o Дайте мне стенку, шоб я ап неё убился. Вы мне мозг вывихнуть собрались?
Какое условие равно false? Почему?
Вы код, который я написал, в точности, без конвертаций и прочих извращений, вставить в программу пробовали ?

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 10 окт 2011, 09:33
VitaliyCh
Neodrop писал(а): :-o Дайте мне стенку, шоб я ап неё убился. Вы мне мозг вывихнуть собрались?
Какое условие равно false? Почему?
Вы код, который я написал, в точности, без конвертаций и прочих извращений, вставить в программу пробовали ?


В точности вставил вот этот код:
if (e.keyCode == KeyCode.X)
print("Pressed \"x\" key.");

Условие ложно, print не отрабатывает. Почему? Сам бы хотел знать. Очевидно из-за того что e.keyCode.ToString() выдает "167", а KeyCode.X.ToString() выдает "X".

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 10 окт 2011, 09:47
Neodrop
А что ж оно должно выдавать, если это enum ?
В первом вашем сравнении, вы получаете индекс перечисления (enum), во втором - имя константы. Тут всё совершенно кашерно.

http://msdn.microsoft.com/query/dev10.q ... 29&rd=true

А вот почему не ловит Х - это уже отдельный вопрос. Может быть даже в саппорт.

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 10 окт 2011, 10:05
VitaliyCh
Ясно, большое спасибо за участие :).

Re: Проблемка с GetKeyUp

СообщениеДобавлено: 10 окт 2011, 10:17
Neodrop
Стукните в личку вот к этому уважаемому камраду : discouraged_one (чтобы темы не плодить в разделе глюков). Ответ отпишите тут ;)