主なコンテンツ

〜主なコンテンツ〜

1. Unityで製作したゲームと製作Tips
  1. 三月精チャレンジ(東方Project二次創作)
    1. 作り方
  2. 英語学習2D(オリジナルスマホアプリ)
2. UE4
3. ゲームアプリ見学
4. Bitbucket & SourceTreeでの一連の流れ
  1. 前半
  2. 後半
5. Tips
  1. UnityのTips
  5. SQL文のTips
  6. Final IK
  7. GearVR+Unity

2016年4月27日水曜日

UnityのInputFieldはちょっと面倒

入力時の処理をスクリプト側で追加したい時の話である。まずはスクリプトを先に見てもらいたい。

void AddButton(QuestionDB.QuestionData DataRow, int answerID, int i){
//子オブジェクトとして追加
RectTransform item = GameObject.Instantiate(buttonPrefab) as RectTransform;
//ボタンの表示を割り当てる
item.GetComponentInChildren<Text> ().text = DataRow.answer;
//コンテンツの子オブジェクトにする
item.SetParent(transform, false);
//ボタンに呼び出すメソッドを割り当てる
if(DataRow.id == answerID){
item.GetComponent<Button> ().onClick.AddListener(Correct);
}else{
item.GetComponent<Button> ().onClick.AddListener(Inorrect);
}
//時間差表示演出
item.GetComponent<AnswerItem> ().Show(0.1f * i);
}
void Correct(){
sManager.Correct ();
}
void Inorrect(){
sManager.Incorrect ();
}
void AddInputField(QuestionDB.QuestionData DataRow, int i){
//子オブジェクトとして追加
RectTransform item = GameObject.Instantiate(inputFieldPrefab) as RectTransform;
//コンテンツの子オブジェクトにする
item.SetParent(transform, false);
InputField input = item.GetComponent<InputField> ();
input.onEndEdit.AddListener (delegate{CheckTextBox(input);});
//時間差表示演出
item.GetComponent<AnswerItem> ().Show(0.1f * i);
}
void CheckTextBox(InputField input){
sManager.CheckTextBox (input.text);
}
view raw InputField.cs hosted with ❤ by GitHub

Buttonをクリックした時に呼び出すメソッドは、10・12行目の通り、単純にメソッド名を書くだけで良い。

さて、InputFieldも同じだろうと思って記述してみたらエラーが出てしまった。それで、正しい書き方というのが33・38行目というわけである。まだよく理解できていないので、公式リファレンスを真似して書いてみた。呼び出すメソッドの引数にはInputFieldが必要な模様。面白いことにこの引数から入力された文字を参照することができる。

詳しいことが分かったら、またここに追記しようと思う。

0 件のコメント:

コメントを投稿