https://github.com/kou-yeung/WebGLInput
GitHub - kou-yeung/WebGLInput: IME for Unity WebGL
IME for Unity WebGL. Contribute to kou-yeung/WebGLInput development by creating an account on GitHub.
github.com
문제 상황
Unity 입력은 비워졌지만 HTML input이 남아 있어 텍스트가 누적되는 문제가 발생했다
예를 들어 안녕 이라는 채팅을 친 후 보낸다
다시 채팅에서 1을 칠려고 한글자를 입력하면 이전 글들이 누적되어서 1안녕 이런식으로 나왔다
로컬에서는 문제가 생기지 않아 WebGLInput 이 문제가 되었다는것을 알게됨
WebGLInput의 구조적 특성
WebGLInput은 WebGL 환경에서 한글 IME 문제를 해결하기 위해
WebGL에서는 HTML input이 원본을 사용한다
- Unity의 InputField / TMP_InputField를 직접 입력 소스로 쓰지 않는다고 한다
- 대신 브라우저 HTML <input>/<textarea>를 생성
- 입력 흐름은 다음과 같다고함
사용자 키 입력
→ HTML input.value 변경
→ JS → C# 콜백(OnValueChange)
→ Unity InputField.text = value
Unity TMP_InputField.text는 코드상 비워줬지만 HTML input.value는 그대로 남아 있어서 생긴 문제였다
예시)
- HTML input.value = "안녕" (이전 값)
- 사용자가 "1" 입력
- HTML input.value → "안녕1" 또는 "1안녕"
- OnValueChange() 콜백 호출
- Unity가 다시 "안녕1"을 받아 덮어씀
결과: “비웠는데 이전 글이 다시 살아나는 것처럼 보이는 현상”
해결 방식 (SyncText)
chatMessage.text = "";
if (webGLInput != null)
{
webGLInput.SyncText(0);
}
SyncText()는 내부적으로
- Unity의 input.text 값을
- HTML input.value에 강제로 덮어씀
- 커서 위치까지 함께 동기화 시켜줌
아래 pr에서도 같은 문제였던것같다
https://github.com/kou-yeung/WebGLInput/pull/184
Add Clear and ClearAll methods to WebGLInput by dannykoh · Pull Request #184 · kou-yeung/WebGLInput
Summary Implemented two new methods for input field management. Clear() — Resets the text content of a single input field on both Unity and HTML sides. ClearAll() — Clears all input fields simulta...
github.com
SyncText 방식이 적합한 경우
- 채팅처럼 특정 입력 하나만 즉시 비워야 할 때
- 최소 수정으로 문제를 해결하고 싶을 때
- 이미 전송 로직이 잘 짜여 있을 때
Clear / ClearAll이 더 적합한 경우
- UI 전환, 채팅창 재오픈, 폼 리셋 같은 명확한 “초기 상태”가 필요할 때
- 여러 입력 필드를 한 번에 리셋해야 할 때
'유니티' 카테고리의 다른 글
| unity 파일 압축 알고리즘!(zip) (0) | 2026.01.27 |
|---|---|
| UNITY videoPlayer 오브젝트에 영상 실행 (0) | 2026.01.27 |
| Slider Value 변경 안먹음 에러 해결(clamp, lerp) (0) | 2026.01.13 |
| unity webgl 로컬 실행 방법(live server) (1) | 2025.12.17 |
| Unity WebGL 에서 window.close() not work (0) | 2025.12.15 |