ngui에서 Input Field 컴포넌트를 통해 게임에서 문자 입력을 받을 수 있는데
해당 컴포넌트를 사용할때 지정할 수 있는 옵션이 있어 알아보았다
아래 옵션에 대한 조건이 맞지 않은 문자는 입력시 입력이 되지 않고 제거가 된다
None : 특별한 기능이 없다
Integer : int형인 숫자만 입력이 된다
Float : int형 + 소숫점 입력이 된다
Alphanumeric : 영문과 숫자 입력이 된다
Username : 영문과 숫자가 입력 되지만 대문자는 소문자로 변경된다
Name : 문자만 입력 되지만 이름의 첫 문자는 대문자로 그다음은 소문자로 변경된다
Filename : 알파벳, 숫자, 공백, 특정 기호(-, _, . 등) 일부 특수 문자 사용이 가능하지만
파일 이름으로 사용 불가능한 일부 문자는 제외된다(예 : /, , :, *, ?, ", <, >, | 등)
자세한 부분은 아래 ngui Input Field 코드를 참고하면 된다
protected char Validate (string text, int pos, char ch)
{
// Validation is disabled
if (validation == Validation.None || !enabled) return ch;
if (validation == Validation.Integer)
{
// Integer number validation
if (ch >= '0' && ch <= '9') return ch;
if (ch == '-' && pos == 0 && !text.Contains("-")) return ch;
}
else if (validation == Validation.Float)
{
// Floating-point number
if (ch >= '0' && ch <= '9') return ch;
if (ch == '-' && pos == 0 && !text.Contains("-")) return ch;
if (ch == '.' && !text.Contains(".")) return ch;
}
else if (validation == Validation.Alphanumeric)
{
// All alphanumeric characters
if (ch >= 'A' && ch <= 'Z') return ch;
if (ch >= 'a' && ch <= 'z') return ch;
if (ch >= '0' && ch <= '9') return ch;
}
else if (validation == Validation.Username)
{
// Lowercase and numbers
if (ch >= 'A' && ch <= 'Z') return (char)(ch - 'A' + 'a');
if (ch >= 'a' && ch <= 'z') return ch;
if (ch >= '0' && ch <= '9') return ch;
}
else if (validation == Validation.Name)
{
char lastChar = (text.Length > 0) ? text[Mathf.Clamp(pos, 0, text.Length - 1)] : ' ';
char nextChar = (text.Length > 0) ? text[Mathf.Clamp(pos + 1, 0, text.Length - 1)] : '\n';
if (ch >= 'a' && ch <= 'z')
{
// Space followed by a letter -- make sure it's capitalized
if (lastChar == ' ') return (char)(ch - 'a' + 'A');
return ch;
}
else if (ch >= 'A' && ch <= 'Z')
{
// Uppercase letters are only allowed after spaces (and apostrophes)
if (lastChar != ' ' && lastChar != '\'') return (char)(ch - 'A' + 'a');
return ch;
}
else if (ch == '\'')
{
// Don't allow more than one apostrophe
if (lastChar != ' ' && lastChar != '\'' && nextChar != '\'' && !text.Contains("'")) return ch;
}
else if (ch == ' ')
{
// Don't allow more than one space in a row
if (lastChar != ' ' && lastChar != '\'' && nextChar != ' ' && nextChar != '\'') return ch;
}
}
return (char)0;
}
반응형
'가이드 > Unity, C#' 카테고리의 다른 글
[Unity/C#] 에디터, 디바이스에서 Json파일 불러오는 방법 (0) | 2023.05.18 |
---|---|
[Unity/C#] Scene couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded. 에러 (0) | 2023.05.14 |
[Unity/C#] position과 localPosition의 차이 (0) | 2023.03.12 |
[Unity/C#] Private 변수 에디터에서 보이게 하는 법 - SerializeField (0) | 2023.02.27 |
[Unity/C#] summary(///) 주석 사용법 (0) | 2023.02.26 |
댓글