UnityでDropdown(UI)を使って登録フォームを作成しています。
Dropdownのデフォルトで表示される表示を下記の手順で変更したいです。
手順)
1、表示されているデフォルトはAとします。Dropdownをタップする。
2、いくつか候補が表示される。(仮にA,B,C,D,Eとします)
3、Dを選択する。
これでDがデフォルトで表示されていますがアプリを終了して
開き直すとAに戻っています。
そこで考えた方法がOnValueChangedでの返り値をPlayerprefsで保存して
Start()メソッドで開く際にPlayerprefs.GetIntで呼び出せば良いのかなと思いました。
しかしこの呼び出した値をDropdownのどこにセットすれば良いのか分かりません。
Dropdownにはlabel欄がありインスペクタではここに設定すれば良い様ですが
DropdownはコンパイルするとPrefabの様なものが生成されるためか
単純にGameObject.GetComponentsInChildren<Text>().textへの参照では
表示されません。
質問はDropdownのデフォルトで表示されるテキストに値を入れたいのですが
どうやって参照すればいいのでしょうか?
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class DropdownCallback : MonoBehaviour { private string region; #pragma warning disable 649 [SerializeField]GameObject dropdownObject; private Text[] texts; private string regionDefaultText; // Start is called before the first frame update void Start() { texts = dropdownObject.GetComponentsInChildren<Text>(); texts[1].text = PlayerPrefs.GetString("region", "地域を選ぶ"); //★うまく参照されず表示されない } // Update is called once per frame void Update() { } public void OnValueChanged(Dropdown dropdown) { Debug.Log("dropdown:" + dropdown.value); switch(dropdown.value) { case 0: region = "hamamatsu"; regionDefaultText = "浜松市、湖西市"; break; case 1: region = "iwata"; regionDefaultText = "磐田市、袋井市、森町"; break; case 2: region = "kakegawa"; regionDefaultText = "掛川市、菊川市、御前崎市"; break; default: region = "etc"; regionDefaultText = "地域を選ぶ"; break; } PlayerPrefs.SetString("region", regionDefaultText); PlayerPrefs.Save(); //PlayerPrefsで保存する } }
環境)
PC: mac
Unity2018.2
言語:C#
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/05 23:23