2015年5月10日 星期日

【Unity】UI物件 InputField名稱輸入

這次要做Unity內的UI物件測試,就如標題所寫的要完成的是:
1.玩家輸入名稱。
2.按下確定。
3.顯示輸入名稱。
對自己來說拿GameObject物件做是比較熟悉的方法,不過既然功能都放在那裡就拿來試試看吧。
上圖為這次完成的畫面,至於成品結果點這裡

首先我們可以看到畫面上所需的三個物件,分別是按鈕(Button)、輸入字串(InputField)、顯示文字(Text)。
這些物件都可以在Unity上方功能列GameObject->UI下找到。

關於UI物件的一些細節功能這裡就先不提,直接從這次的輸入功能下手。
準備好這些物件後先來看Button,在Button上可以找到名為Button(Script)的Component,最下方的On Click()就是這次主要的功能。

在按下Button時,On Click()的函式就會做動作,要使那些物件做那些函式功能可以透過+來新增,當然沒有適合的功能也是可以自己寫。
由於預設函式找不到符合需求的功能,所以在這裡新增一個空物件EnterControl,接著在新增腳本TestClick.cs帶到EnterControl上,將畫面中的顯示文字Text帶入TestClick下的變數playerName。

至於腳本TestClick.cs內容如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TestClick : MonoBehaviour {
        public Text playerName;////(1)
        public void EnterPlayerName(Text enterText){////(2)
                playerName.text = enterText.text;////(3)
        }
}
(1)為要修改的文字Text,這裡將場景中的顯示文字帶入,(2)是要呼叫的函式,需要一個Text變數,最後在(3)的地方將文字帶入就好。

自製的功能準備好了以後,我們回到Button身上。

1.首先透過+新增On Click下的List。
2.將剛剛新增的空物件EnterControl帶入。
3.然後在選項中就可以看到剛剛所寫的腳本TestClick,在TestClick下面就會有EnterPlayerName,選擇它。
4.可以看到EnterPlayerName函式是需要一個Text變數,這裡再把InputText帶入。

到這裡執行後就是範例所看到的結果,這次就到這裡。
(是說一開始明明是在研究遊戲存檔功能,怎麼弄著弄著就變成UI。)

2 則留言:

  1. 想請問一下,我的版本是3.8.0.3。在我的Hierarchy中沒看到EnterControl,不知道有甚麼解決辦法?

    回覆刪除
  2. 沒事 了解了 沒看清楚哈哈

    回覆刪除

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...