개발 강좌 Unity3D 에서 한영 전환시 키입력 문제 우회하기별바람입니다. 오랫만에 개발 관련 글을 올립니다. PC 온라인 플랫폼으로 신작 "코드 블랙"을 개발 중, 채팅등을 위해 한글 전환시에 키보드 입력을 받지 않는 문제가 생겨서 확인하다보니, Unity3D 의 Input.GetKey() 계열의 명령이 영문 키보드만 받는다는 사실을 깨달았습니다. 일단 한글 키가 켜져있다는 경고를 주고 넘길까 했으나, 역시나 그건 별로 좋지 않은 해결책이라 생각해서 귀차니즘을 이기고 우회하기 위한 코드를 짜봤네요. 일단 윈도우즈의 user32.dll 을 유니티에서 불러와서, GetAsyncKeyState 명령을 사용해서 키 입력을 받는 방식이며, 유니티의 KeyCode 체계를 윈도우즈의 Virtual Keycode 로 전부 매핑했습니다. (즉 유니티의 GetKey(KeyCode.A) 방식의 명령어를 그대로 쓸 수 있습니다) 사용 방법은 WindowsInput.cs 를 프로젝트에 포함시킨 후 using WindowsInput 을 선언, Input.GetKey(KeyCode) 를 WinInput.GetKey(KeyCode) 으로 수정해주면 됩니다. (Input 을 WinInput 으로 바꿔주시기만 하면 됩니다) Update) 생업이 바빠서 업데이트가 늦었습니다. ㅠㅠ 2021.01.08: 키 입력이 남아있는 버그 수정 (도움주신분: 우유돌컴) 2021.01.08: GetKeyDown, GetKeyUp 추가 (도움주신분: Flashscape) GitHub : https://github.com/Byulbram/WinInput.git UNITY 스크립트 유니티 input getKey 한글 우회,한영키 GetKeyDown 수정, GetKeyUp 추가 버전사용법 1.첨부파일을 받는다 2.프로젝트에 WindowsInput 스크립트를 추가 3. 새 스크립트를 만든 뒤 using WindowsInput; 추가 4. 사용
주의 유니티창이 비활성화 되었어도 키가 먹히기 때문에 void OnApplicationFocus(bool b){} // 게임창이 활성화 되면 true 비활성화 false 를 써서 예방하자
http://byulbram.blog.me/220663468300 우분투 12.04에서 한/영 전환키를 누르면 오른쪽 Alt키로 인식해서 한영 전환 후에 곧바로 유니티의 HUD가 작동된다. 차후 업데이트에서 수정되겠지만, 당분간은 다음과 같이 회피한다. 시스템 설정 > 키보드 > 바로가기 > 실행아이콘 > 허드를 표시할 키 를 확인해보면 기본적으로 왼쪽 Alt키로 등록되어 있지만 오른쪽 Alt키도 동작하므로 기존의 단축키와 충돌하지 않는 다른 키로 바꿔준다. 나는 일단 Shift + Super L로 변경. * C# API 를 이용해 한/영 키 상태 값 구하기 예제... Main전체 소스 코드 Form1.cs
*예제 결과 https://kdsoft-zeros.tistory.com/161 [VBNET] [API] 한/영 키 상태 값 구하기 * VBNET API 를 이용한 한/영 키 상태 값 얻어 오기 예제... 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Public Class Form1 'API 선언... Private Declare Function ImmGetContext Lib "i.. kdsoft-zeros.tistory.com |