###前提・実現したいこと
UnityのuGUIのボタンに関する質問なのですが、C#によって動的にボタンを作成するスクリプトを作成しました。(BtnMng.cs)
このスクリプトでは、MySQLに保存しているデータを引っ張ってきて、生成するボタンにTextとして貼り付けています。
実現したいことは、動的に生成したボタンにそれぞれ異なるボタン処理を行いたいです。
###発生している問題・エラーメッセージ
動的に生成されたボタンにそれぞれ異なるクリックイベントをつけたいのですが、どのようなコードを追加すればよいのかわからず行き詰ってしまいました。
###該当のソースコード
BtnMng.cs
using UnityEngine; using System.Collections; using MiniJSON; using UnityEngine.UI; public class BtnMng : 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 list in List) { string number = (string)list["num"]; var item = GameObject.Instantiate(prefab) as RectTransform; item.SetParent(transform, false); var text = item.GetComponentInChildren<Text>(); text.text = number.ToString() + "番"; } } }
###試したこと
多くのサイトを参考にして
BtnMng.csの text.text = number.ToString() + "番"; の後に
Button
1 button.onClick.AddListener(() => 2 { 3 print("aaa"); 4 });
を記載すると、すべてのボタンで、クリックするとaaaという文字がログに表示されるようになりましたが、それぞれのボタンで異なる処理をするには未だ至っておりません。
まだUnityを始めたばかりのため、至らない点多くあり、説明が不足している点があるかと思いますが、何卒ご協力お願いできないでしょうか。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/12 09:02
2016/09/12 11:43
2016/09/13 02:01 編集
2016/09/13 02:20