protected void UpdateScrollView() { if (scroll == null) { return; } if (buttons.Count > 0) { MagiakerButton button = buttons[buttons.Count - 1]; Vector2 buttonPos = GetButtonPos(buttons.Count - 1); buttonPos.y -= buttons[0].rect.sizeDelta.y / 2; scroll.content.sizeDelta = new Vector2(scroll.content.sizeDelta.x, -buttonPos.y < defaultHeight ? defaultHeight : -buttonPos.y); //Vector2 defPos = new Vector2(pos.x, scroll.content.sizeDelta.y / 2 - button.rect.sizeDelta.y / 2 - 165f); //Vector2 defPos = new Vector2(pos.x, pos.y); for (int i = 0; i < buttons.Count; i++) { //buttons[i].transform.localPosition = defPos + GetButtonPos(i) - pos; //buttons[i].rect.anchoredPosition = pos; buttons[i].rect.localPosition = GetButtonPos(i); } } else { scroll.content.sizeDelta = new Vector2(scroll.content.sizeDelta.x, defaultHeight); } }
/// <summary> /// ボタンの生成 *後から生成する用 /// </summary> /// <returns></returns> protected MagiakerButton AddButton(List <string> strings, List <Sprite> sprites) { MagiakerButton button = Instantiate(baseButton).Init(strings, sprites); button.transform.SetParent(parent); button.transform.localScale = Vector2.one;//親が小さければボタンも小さくする button.transform.localPosition = GetButtonPos(buttons.Count); buttons.Add(button); return(button); }
private void AddButton() { //ボタンが足りなければ追加する while (buttons.Count < selectMagick.Bullets.Count) { int num = buttons.Count; MagiakerButton button = AddButton(new List <string>(), new List <Sprite>()); button.button.onClick.AddListener(() => OnClick(num)); } }
private Text text;//ビルド後のデータで、このTextを消去するとスクロールバー内が表示されない場合あり。 protected override void Update() { base.Update(); if (selectMagick != MagickMakeManager.Instance.magick) { SelectMagicDate(MagickMakeManager.Instance.magick); } //弾道が追加・削除されていたら更新する if (IsButtonUpdate()) { AddButton(); for (int i = 0; i < buttons.Count; i++) { if (i < selectMagick.Bullets.Count) { if (buttons[i].texts[0].text != selectMagick.Bullets[i].bullet.name) { buttons[i].texts[0].text = selectMagick.Bullets[i].bullet.GetBulletName(); } } else { //ボタンの数が多ければ、必要無い分は削除する MagiakerButton button = buttons[i--]; buttons.Remove(button); Destroy(button.gameObject); } } bulletsCount = selectMagick.Bullets.Count; } else if (selectMagick == null) { MagiakerButton button; //魔法が存在しないなら全てのボタンを消去する while (buttons.Count > 0) { button = buttons[0]; buttons.Remove(button); Destroy(button.gameObject); } } text.text = "aaa";//buttons[0].transform.localPosition.ToString(); }
/// <summary> /// ボタンリストの生成 /// </summary> /// <param name="stirngs"></param> /// <param name="sprites"></param> protected virtual void MakeButtons(List <List <string> > strings, List <List <Sprite> > sprites) { //大きいリストをループ数の基準にする int Length = strings.Count < sprites.Count ? sprites.Count : strings.Count; List <string> str; List <Sprite> spr; for (int i = 0; i < Length; i++) { str = i < strings.Count ? strings[i] : null; spr = i < sprites.Count ? sprites[i] : null; MagiakerButton b = MakeButton(str, spr); buttons.Add(b); b.transform.SetParent(parent); b.transform.localScale = baseButton.transform.localScale; //新しい親の大きさに合わせてサイズ調整 b.transform.localPosition = GetButtonPos(i); } }