Unity UGUI基礎之InputField
InputField(輸入域),為文字輸入控制元件,等同於NGUI的Input。
一、InputField元件:
Text Component(文字元件):此輸入域的文字顯示元件,任何帶有Text元件的物體。
Text(文字):此輸入域的初始值。
Character Limit(字元數量限制):限定此輸入域最大輸入的字元數,0為不限制。
Content Type(內容型別):限定此輸入域的內容型別,包括數字、密碼等,常用的型別如下:
Standard(標準型別):什麼字元都能輸入,只要是當前字型支援的。
Integer Number(整數型別):只能輸入一個整數。
Decimal Number(十進位制數)
Alpha numeric(文字和數字):能輸入數字和字母。
Name(姓名型別):能輸入英文及其他文字,當輸入英文時自動姓名化(首字母大寫)。
Password(密碼型別):輸入的字元隱藏為星號。
Line Type(換行方式):當輸入的內容超過輸入域邊界時:
single Line(單一行):超過邊界也不換行,繼續延伸此行,輸入域中的內容只有一行;
multi Line Submit(多行):超過邊界則換行,輸入域中內容有多行;
multi Line Newline(多行):超過邊界則新建換行,輸入域中內容有多行。
Placeholder(位置標示):此輸入域的輸入位控制符,任何帶有Text元件的物體。
注意:Placeholder對應的Text也為此輸入框的提示語顯示:(例如Enter text...為提示語,當輸入框內容為空時,提示語可見,內容不為空時,提示語不可見)
Caret blink rate(游標閃爍速度):標示輸入游標的閃爍速度。
Hide mobile input(手機端隱藏輸入):這個沒測試過有什麼效果。
On Value Changed:值改變時觸發訊息。
End Edit:結束編輯時觸發訊息。
二、使用中的技巧:
△最近發現了UGUI InputField的一個BUG,我自己測試了很多遍,應該是BUG吧:
BUG描述:InputField的輸入游標在本身已經active為false之後依然還顯示在場景中;
觸發這個BUG的方式:當一個InputField處於焦點狀態(也就是游標在輸入域內閃爍),當游標顯示的時候(游標總是一閃一逝),立即隱藏該InputField自身的gameobject或者其任意父級的gameobject(程式碼中SetActive(false)或者在編輯器中直接勾掉整個gameobject,注意不是InputField的enabled),如果此時游標正好閃爍出現的話,那麼游標就會一直顯示在原地,而我們的整個InputField本身已經處於未啟用狀態了。
如下:
焦點這個InputField之後:
看到游標閃爍出來立刻隱藏他;
我們可以看到游標被孤立了(當然,游標一直比輸入域高出一截這個問題也是相當的坑爹)。
△如何避免游標比輸入域高的現象發生?
這個現象可以算是BUG也可以算是一種設定,InputField游標的大小與其中文字的大小一致,但他的位置卻是始終上端對齊至InputField的目標Text Component上。
如下,如果你的InputField中輸入的文字(123456)是上下居中對齊,那麼游標的位置依然會保持在紅箭頭所指的位置(上端對齊),當然如果輸入跳行的話游標還是會跳到下一行。
要避免出現這個問題的話,最好的方式就是所有輸入域都統一保持左對齊和上對齊,如果非要居中對齊的話,那麼整個Text的邊框大小就儘量保持與文字大小一致,畢竟,居中對齊的輸入域應該是不存在換行的吧,當然如果你非要這麼做,那還是老老實實的靠邊對齊吧。