ボタン入力に応じた種類のTextが配列に格納され、作成された配列内のTextをCanvas上に整列させるコードを書いています。
例えば、”ボタン 1”が押されればTextAとTextBとTextCが表示され、”ボタン 2”が押されればTextAとTextCとTextDが表示される、といった実装が目標です。
以下がそのコードです。
デバッグで表示されたlocalPositionの値自体は、私が期待する整列後のVector値になっているのですが、Canvas上のTextはその値通りの位置に整列されていません。
C#
1 2private void TextSetting() 3 { 4 int count = 0; 5 6 foreach(Text txt in Texts)//TextsはTextが格納された配列です。格納手順は省いています。 7 { 8 9 txt.gameObject.SetActive(true);//あらかじめ非アクティブにされたText達の中から指定のモノだけアクティブにする方法をとっています。Text達はUI上の別オブジェクトの子要素として管理されてます。 10 var RT = txt.GetComponent<RectTransform>(); 11 RT.localPosition = new Vector3(50, -30 - count * 45, 0);//Canvas上に整列させる処理です。 12 13 Debug.Log(RT.localPosition); 14 count++; 15 16 } 17 } 18 19
また、これとは別に書いた、InstantiateしたButtonを順に整列させるコードは以下のものでうまく動いてくれました。
C#
1public Button ButtonPrefab; 2public Image Buttons;//生成したButton達を子要素として管理、表示する背景画像です。 3 4 private void ButtonSetting(){ 5 6 Button createdButton=Instantiate(ButtonPrefab) as Button; 7 8 createdButton.transform.SetParent(Buttons.transform, false); 9 createdButton.transform.localPosition = new Vector3(-25, 5 - 25 * (emptySlot - 1), 0);//emptySlotはボタンが増減するたびに別メソッド内でカウントアップ/ダウンされ、ボタンが整列する位置を調整しています。 10 11} 12
Buttonの位置を定める部分のコードをトレースして、Textの位置を定めようともしたのですが、これもうまくいきませんでした。
ネット上の情報を元にいろいろと手を加えてみたのですが、この差異が理解できません。
ButtonとTextではCanvas上での座標の扱いが違うということでしょうか?
それともTextの方のコードが根本的に間違えているのでしょうか?
正しいUIの位置の変更方法をご教授願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/31 07:35