using UnityEngine; using TMPro; [RequireComponent(typeof(TMP_InputField))] public class PostalCodeFormatter : MonoBehaviour { private TMP_InputField input; private void Awake() { input = GetComponent(); input.characterLimit = 7; // A1A 1A1 input.onValueChanged.AddListener(OnValueChanged); } private void OnDestroy() { if (input != null) input.onValueChanged.RemoveListener(OnValueChanged); } private void OnValueChanged(string raw) { if (string.IsNullOrEmpty(raw)) return; // Majuscules + enlever espaces string s = raw.ToUpper().Replace(" ", ""); // Garder max 6 chars (A1A1A1) if (s.Length > 6) s = s.Substring(0, 6); // Réinserer espace après 3 chars si assez long if (s.Length > 3) s = s.Insert(3, " "); // A1A 1A1 // Réassigne seulement si ça change pour éviter boucles if (s != input.text) { int caret = input.caretPosition; input.text = s; input.caretPosition = Mathf.Min(s.Length, caret); } } }