From f0bd7b276264ecd35d5eec12d1e59a651cb92156 Mon Sep 17 00:00:00 2001 From: "aube.lee" Date: Wed, 5 Mar 2025 22:10:02 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=BA=90=EB=A6=AD=ED=84=B0=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=8B=9C=20=EC=98=81=EB=AC=B8=EB=A7=8C=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UI/Prefabs/UI.CharaterCreateUI.prefab | 19 ++++++++++-- .../Gameton/Scripts/UI/CharaterCreateUI.cs | 30 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Gameton-06/Assets/Gameton/Resources/UI/Prefabs/UI.CharaterCreateUI.prefab b/Gameton-06/Assets/Gameton/Resources/UI/Prefabs/UI.CharaterCreateUI.prefab index 1e97512e..5a232d72 100644 --- a/Gameton-06/Assets/Gameton/Resources/UI/Prefabs/UI.CharaterCreateUI.prefab +++ b/Gameton-06/Assets/Gameton/Resources/UI/Prefabs/UI.CharaterCreateUI.prefab @@ -377,11 +377,11 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 1 + m_ReferencePixelsPerUnit: 100 m_ScaleFactor: 1 m_ReferenceResolution: {x: 1920, y: 1080} m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 + m_MatchWidthOrHeight: 0.5 m_PhysicalUnit: 3 m_FallbackScreenDPI: 96 m_DefaultSpriteDPI: 96 @@ -421,6 +421,7 @@ MonoBehaviour: createButton: {fileID: 1887714318721360375} playerDatas: [] nicknameCondition: {fileID: 6220890634190874460} + nicknameInputField: {fileID: 0} characterCreateUI_Modal: {fileID: 7298901665149865196} blackCat_Spotlight: {fileID: 6897867871924581457} whiteCat_Spotlight: {fileID: 6223168446447065192} @@ -1236,7 +1237,19 @@ MonoBehaviour: m_Calls: [] m_OnValueChanged: m_PersistentCalls: - m_Calls: [] + m_Calls: + - m_Target: {fileID: 6736657530173519912} + m_TargetAssemblyTypeName: TON.CharaterCreateUI, Assembly-CSharp + m_MethodName: RemoveNonEnglishCharacters + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 m_OnTouchScreenKeyboardStatusChanged: m_PersistentCalls: m_Calls: [] diff --git a/Gameton-06/Assets/Gameton/Scripts/UI/CharaterCreateUI.cs b/Gameton-06/Assets/Gameton/Scripts/UI/CharaterCreateUI.cs index 05b8c8fe..cf5d28c2 100644 --- a/Gameton-06/Assets/Gameton/Scripts/UI/CharaterCreateUI.cs +++ b/Gameton-06/Assets/Gameton/Scripts/UI/CharaterCreateUI.cs @@ -1,5 +1,6 @@ using System.Collections; using System.Collections.Generic; +using System.Text.RegularExpressions; using TMPro; using UnityEngine; using UnityEngine.Assertions; @@ -16,6 +17,7 @@ namespace TON [SerializeField] private TextMeshProUGUI nicknameCondition; + public TMP_InputField nicknameInputField; public GameObject characterCreateUI_Modal; public GameObject blackCat_Spotlight; public GameObject whiteCat_Spotlight; @@ -28,6 +30,14 @@ namespace TON // 처음에는 버튼을 비활성화 createButton.interactable = false; + + + // 입력 필드가 할당되지 않았다면 현재 게임 오브젝트의 InputField 컴포넌트를 가져옵니다. + if (nicknameInputField == null) + nicknameInputField = GetComponent(); + + // 입력 필드의 문자 확인 이벤트에 메서드 연결 + nicknameInputField.onValidateInput += ValidateInput; } public void SelectCharacter(string characterType) @@ -63,6 +73,26 @@ namespace TON characterCreateUI_Modal.SetActive(true); } + private char ValidateInput(string text, int charIndex, char addedChar) + { + // 영문 대소문자만 허용 (A-Z, a-z) + if (Regex.IsMatch(addedChar.ToString(), @"^[a-zA-Z]+$")) + { + return addedChar; + } + + // 영문 이외의 문자는 무시 + return '\0'; + } + + // 추가 옵션: 기존 텍스트에 영문 이외의 문자가 있다면 제거하는 메서드 + public void RemoveNonEnglishCharacters() + { + string englishOnly = Regex.Replace(nicknameInputField.text, @"[^a-zA-Z]", ""); + nicknameInputField.text = englishOnly; + } + + public void OnClickConfirmButton() { TMP_InputField characterName = characterCreateUI_Modal.GetComponentInChildren();