前提・実現したいこと
こんにちは。
UnityとC#を勉強中のものです。
Unityでスクロールバーにボタンを動的生成しようとしています。
ボタンの内部にtextを2つ配置し、Vertical Layout Groupで2行にします。
「Title」と「Detail」で配置してます。
 ̄ ̄ボタン ̄ ̄
「Title」
「Detail」
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
スクロールバーに動的にボタンを生成するとして、
元データはどのように管理するのが良いのでしょうか。
Detailは3行にしようと思ってます。
出来ているところ
TitleとDetailの表示 両方とも配列に入れてます。
Arrayに直接入れており、Detailを1行1行入れていくのが大変で困っている状況です。
見づらさもあるため、見やすく修正したいと思ってます。
将来的には、過去選択(クリック)した回数で
降順に並び替えたりしたいと思ってます。
元データをXMLファイルなり、何かでまとめておきたいのですが
classがあまりわかっていないからか、どうやって複数のデータを管理するのかわかりません。
ボタンの表示内容を複数種類持ちたいのと、
過去選択した回数(達成回数、日付)などもデータ保持したいと思ってます。
分からないこと
・データの保存・取得方法
(Classを利用した、複数データの紐づけ。
TitleとDetailと、今までクリックした回数とか。
・Detailの内容を3行にする方法
手入力で テスト1\テスト2\テスト3\などと入力して改行表示されることは確認済み。
該当のソースコード
出張しているため元のソースを参照できませんが
以下のことと似たようなことをしています。
プレハブから作成し、textに値をいれています。
データを入れる仕組みや、履歴を保持する仕組みはまだ作れていないため
とりあえず1行ずつデータ作成しているところです。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class ScrollData : MonoBehaviour 7{ 8 // Start is called before the first frame update 9 [SerializeField] 10 RectTransform prefab; 11 12 string[] titleData = { "1行目トマト", "2行目キャベツ"}; 13 14 string[] datailData = 15 { "トマトは赤い\n大体3個とかでまとめ売りされている。\nトマト嫌いでもプチトマトは食べれる人がいる。", 16 "キャベツは緑色\n1玉100円程度の値段。\nとんかつに千切りキャベツはつきもの。"}; 17 18 19 20 21 void Start() 22 { 23 for (int i = 0; i < titleData.Length; i++) 24 { 25 var item = GameObject.Instantiate(prefab) as RectTransform; 26 item.SetParent(transform, false); 27 28 // var text = item.GetComponentInChildren<Text>(); 29 var Title = item.Find("Title").GetComponent<Text>(); 30 var Detail = item.Find("Detail").GetComponent<Text>(); 31 32 Title.text = titleData[i]; 33 Detail.text = datailData[i]; 34 } 35 } 36 }
試そうとしていること
Unity/C#で XMLファイルとしてデータを保存する(UTF-8/日本語対応)
【Unity】【C#】クエストシステムを実装する 第1回
↑イメージに一番近いのはコレ。
上記は内容確認中です。
シリアライズとかが難しくてあまりよく理解できてません。
補足情報(FW/ツールのバージョンなど)
Unity 2021.1.16
あなたの回答
tips
プレビュー