2017-04-06 11 views
0

Facebookのような検索インターフェイスを作成しようとしています。つまり、名前の全部または一部を入力すると、一致するものが下のリストに表示されます。実行時にguiのリストを表示するには

私はInputField(SearchBar)から入力を抽出する方法を知っていますが、実行時に下のパネルに一致する結果を表示する方法がわかりません。

各マッチに新しいラベル/ボタンを作成し、パネルに追加しますか? 私はどんな容器を使うべきですか? 実際にどのように追加/追加するのですか?

ご協力いただければ幸いです。ここで

は私のシーンです:

enter image description here

そしてここでは私のコードです:

using UnityEngine; 
using UnityEngine.UI; 
using System; 

public class SearchScript : MonoBehaviour { 

    public InputField SearchBar; 
    public GameObject Panel; 
    public List<String> myList; 

    public void Start() { 

     myList = new List <String>(); 
     myList.Add("Andre"); 
     myList.Add("Angela"); 
     myList.Add("Temi"); 
     myList.Add("Tupac"); 
     myList.Add("Graham"); 
     myList.Add("Grandpa"); 
     myList.Add("Michael"); 
     myList.Add("Miguel"); 

     SearchBar.onValueChanged.AddListener(delegate {ValueChangeCheck(myList); }); 
    } 

    public void ValueChangeCheck(List<string> myList) { 

     string contents = SearchBar.text; 

     List<String> outList = new List <String>(); 

     for (int i = 0; i < myList.Count; i++) { 
      if (myList [i].Contains (contents)) { 
       outList.Add (myList [i]); 
      } 
     } 

     for (int i = 0; i < outList.Count; i++) { 
      >>HELP<< 
     } 
    } 
} 

答えて

3

This pageユニティマニュアルであなたが一般的に行う必要がありますについて説明します。あなたがしたい最初のことは、(エディタで)空白のボタン/ラベルを作るか、最終製品がどのように見えるかです。この例では、ボタンになるように行動します。あなたが望むようにボタンを見つけたら、位置を(0,0)に設定し、それをプレハブにします。 MonoBehaviourで公開フィールドを作成し、エディタでプレハブをドラッグします。次に、あなたのループの中で、あなたはあなたが親あなたの検索バーの親であるあなたのキャンバスに新しいオブジェクトを(、という作り、各ボタンのインスタンスを作成する必要があります

public GameObject ButtonPrefab; 

を私たちは持っている:それは次のようになります。それを得るための簡単な方法)。その後、あなたのテキストを割り当て、それをシフトし、あなたは金色になります!

for (int i = 0; i < outList.Count; i++) { 
    var newButton = Instantiate(ButtonPrefab,SearchBar.transform.parent,false) as GameObject; 

    // This assumes you have a Text component in your prefab 
    newButton.GetComponent<Text>().text = outList[i]; 

    // You'll just have to experiment to find the value that works for you here 
    newButton.transform.position += Vector2.down * 20 * (i + 1); 
} 
+0

これは大変役立ちました。もし私が尋ねることができるのであれば、検索バーのエントリが変更されたときに、どのようにボタンを破壊することをお勧めしますか? –

+0

あなたのオブジェクトにどこかに保存するループの 'List 'にボタンを追加します。おそらくプライベートフィールドです。後でボタンを破棄したいときにリストを反復し、その中の各ボタンを破棄し、リストを '.Clear()'します。 – Brien

関連する問題