?? 博客主頁:https://xiaoy.blog.csdn.net
?? 本文由 呆呆敲代碼的小Y 原創(chuàng),首發(fā)于 CSDN??
?? 學(xué)習(xí)專欄推薦:Unity系統(tǒng)學(xué)習(xí)專欄
?? 游戲制作專欄推薦:游戲制作
??Unity實戰(zhàn)100例專欄推薦:Unity 實戰(zhàn)100例 教程
?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
?? 未來很長,值得我們?nèi)Ρ几案篮玫纳?
------------------??分割線??-------------------------
Unity 小科普
老規(guī)矩,先介紹一下 Unity 的科普小知識:
- Unity是 實時3D互動內(nèi)容創(chuàng)作和運營平臺 。
- 包括游戲開發(fā)、美術(shù)、建筑、汽車設(shè)計、影視在內(nèi)的所有創(chuàng)作者,借助 Unity 將創(chuàng)意變成現(xiàn)實。
- Unity 平臺提供一整套完善的軟件解決方案,可用于創(chuàng)作、運營和變現(xiàn)任何實時互動的2D和3D內(nèi)容,支持平臺包括手機、平板電腦、PC、游戲主機、增強現(xiàn)實和虛擬現(xiàn)實設(shè)備。
- 也可以簡單把 Unity 理解為一個游戲引擎,可以用來專業(yè)制作游戲!
Unity 實用小技能學(xué)習(xí)
InputField輸入框組件實現(xiàn)輸入限制,只能輸入中文或特殊字符等
在使用InputField的過程中,有些時候我們需要對一些輸入字符做限制。
比如只允許輸入整數(shù),字母數(shù)字,允許字母和數(shù)字但無法輸入符號,只能輸入中文等輸入限制。
這個使用InputField組件自帶的屬性ContentType可以直接解決掉部分限制。比如只能輸入整數(shù)及只能輸入字母和數(shù)字等,但是某些特殊性的限制就只能通過我們使用代碼進行特殊限制了。
下面來介紹只能輸入中文的具體方法。
首先新建一個腳本掛載到InputField組件的游戲?qū)ο笊?或者其他場景物體)。
方法一:onValidateInput:自定義驗證回調(diào)
此方法是使用Unity InputField組件的回調(diào)方法對每個輸入的字符進行字符驗證,然后我們對該字符進行相關(guān)判定即可。
代碼如下:
using UnityEngine.UI;
using UnityEngine;
public class InputFieldTest : MonoBehaviour
{
private InputField m_inputField;
protected void Awake()
{
m_inputField= GetComponent<InputField>();
m_inputField.onValidateInput = ValidateCallback;
}
private char ValidateCallback(string text, int charIndex, char ch)
{
//Debug.Log($"測試語言。text:{text}, charIndex:{charIndex}, ch:{ch}");
if (ch >= 0x4e00 && ch <= 0x9fa5)//漢字的范圍
{
return ch;
}
else
{
return (char)0;
}
}
}
方法二:onValueChanged配合Regex類
此方法使用了.Net的 Regex類,需要引入命名空間 System.Text.RegularExpressions
。
然后使用 Regex.IsMatch()
進行匹配項驗證,來篩選我們的字符做判定。
IsMatch(String) | 指示 Regex 構(gòu)造函數(shù)中指定的正則表達式在指定的輸入字符串中是否找到了匹配項。
代碼如下:
using UnityEngine.UI;
using UnityEngine;
using System.Text.RegularExpressions;
public class InputFieldTest : MonoBehaviour
{
private InputField m_inputField;
protected void Awake()
{
m_inputField= GetComponent<InputField>();
m_inputField.onValueChanged.AddListener(OnInputFieldValueChang);
}
private void OnInputFieldValueChang(string inputInfo)
{
Regex reg = new Regex("^[\u4e00-\u9fa5]+$");
if (reg.IsMatch(inputInfo))
{
m_inputField.text = inputInfo;
}
else
{
if (m_inputField.text == "")
{
m_inputField.text = "";
}
else
{
m_inputField.text = inputInfo.Substring(0, inputInfo.Length - 1);
}
}
}
}
效果如下:
若是想要一些指定的其他特殊輸入限制,只需要變換if中的正則表達式條件即可。
UGUI組件學(xué)習(xí)文章:Unity-UGUI控件全面解析 | InputField 輸入框組件詳解
正則表達式參考文章:【Unity3D日常開發(fā)】在Unity中使用正則表達式文章來源:http://www.zghlxwxcb.cn/news/detail-426415.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-426415.html
到了這里,關(guān)于【100個 Unity實用技能】 | InputField輸入框組件實現(xiàn)輸入限制,只能輸入中文或特殊字符等的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!