質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

4497閲覧

Unity 動的に生成したボタンの並び替え

Hutax

総合スコア32

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/09/13 06:04

編集2022/01/12 10:55

#実現したいこと
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に並び替えたいと考えています。

説明が不十分な所ばかりですので、補足説明が必要でしたら、おっしゃっていいただければ詳細に回答したいと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

配列に入っているのであれば、OrderBy 等でソートしてみてはいかがでしょうか。

参考URL
C# やるなら LINQ を使おう

投稿2016/09/13 06:14

mugicya

総合スコア1046

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問