#実現したいこと
Unityのボタンに関する質問なのですが、C#で動的にボタンを生成するスクリプトを書きました。(Test.cs)
これは、MySQLに保存されているデータをJSONを用いて取得し、取得したデータをボタンのTextに表示しています。
このソースは、Hierarchy内のScrollviewの子オブジェクトである、ContentというオブジェクトにAddComponentしております。
これを実行すると、
Hierarchy内にButton(Clone)が表示されます。
実現したいことは、動的に作成されたButton(Clone)の表示の順番を変えたいです。
順番は、MySQLから取得してきた数値データの大きい順に並び替えをしたいと考えています。
(今回のソースの場合では、number.ToString()です)
そこで、別途ボタンを用意し、そのボタンを押すことで、動的に生成した、Hierarchy内のButton(Clone)の順番を数値の大きい順に並び替えたいと考えています。
。
###コード
C# Test.cs
using UnityEngine; using System.Collections; using MiniJSON; using UnityEngine.UI; using UnityEngine.SceneManagement; public class Test : MonoBehaviour { [SerializeField] RectTransform prefab = null; void Start() { StartCoroutine("GetJSON"); } IEnumerator GetJSON() { // webサーバへアクセス WWW www = new WWW("http://localhost/~~~.php"); // webサーバから何らかの返答があるまで停止 yield return www; // もし、何らかのエラーがあったら if (!string.IsNullOrEmpty(www.error)) { // エラー内容を表示 Debug.LogError(string.Format("Fail Whale!\n{0}", www.error)); yield break; // コルーチンを終了 } // webサーバからの内容を文字列変数に格納 string json = www.text; // JSONデータは最初は配列から始まるので、Deserialize(デコード)した直後にリストへキャスト IList List = (IList)Json.Deserialize(json); // リストの内容はオブジェクトなので、辞書型の変数に一つ一つ代入しながら、処理 foreach (IDictionary member in List) { string number = (string)member["num"]; var item = GameObject.Instantiate(prefab) as RectTransform; item.SetParent(transform, false); var text = item.GetComponentInChildren<Text>(); text.text = number.ToString() + "番"; } } }
###問題点、試したこと
[Unity] ヒエラルキーのGameObjectの順序をスクリプトから取得・操作する
上のような、多くの参考サイトを試しましたが、コンテキストメニューを用いて順番の変更であったり、ボタンのTextの数値の大きさで順番を入れ替える方法を示した参考サイトなどもなく、恥ずかしながら行き詰ってしまいました。
ここからどのようなコードを書き加えていけばよいか、ご教授お願いできないでしょうか。
Unityを始めたばかりで、まだ知識、理解が乏しい状況です…
並び替えにおいてかなり頭を悩ませています。
拙い説明ではあるかと思いますが、どうかお力をお借りできないでしょうか。
よろしくお願い致します。
###参考
現段階では、ボタンのTextの表示は上から順番に、1~10の数字が書かれたボタンを生成しています。
これを上から10~1に並び替えたいと考えています。
説明が不十分な所ばかりですので、補足説明が必要でしたら、おっしゃっていいただければ詳細に回答したいと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。