facebook twitter hatena line email

「Unity/リスト表示」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(リストの高さが狭い時)
行46: 行46:
 
==リストの高さが狭い時==
 
==リストの高さが狭い時==
 
VerticalLayoutGroupのspacingを200とかいれて間隔を空ける
 
VerticalLayoutGroupのspacingを200とかいれて間隔を空ける
 +
 +
==リストのスクロールが下に行かない場合==
 +
#ScrollViewのViewportのContentの下にAddComponentでContentSizeFitterを追加
 +
#ContentSizeFitterのVerticalfitをUnconstrainedからPreferredSizeにする

2020年5月1日 (金) 20:13時点における版

リストのUIを作る

unity/UIScrollView [ショートカット]

  1. リスト内の部品はPanelで作ってprefub化する
  2. prefubはAssets/Resourcesにいれる

参考:https://tech.pjin.jp/blog/2016/08/30/unity_skill_3/

prefubを画面にロード

参考:unity/3d [ショートカット]]

リストの部品(panel)をprefubからロードする

  1. Ui/Panelを生成し、Textやボタンなどを貼り付ける
  2. Assets/Resourcesの中にPanelをドラッグするとprefubができる
  3. 以下のようにインスタンスを生成する
GameObject prefab = (GameObject)Resources.Load("HogePanel");
Vector3 position = new Vector3(x, y, z);
GameObject obj = Instantiate(prefab, position, Quaternion.identity);
obj.name = "HogePanel1";
  1. "Scroll View/Viewport/Content"にAddComponentsで、VerticalLayoutGroupを追加する
  2. VerticalLayoutGroupのControlChildSizeにチェック入れる。
  3. VerticalLayoutGroupのspacingを200とかいれて間隔を空ける

参考:http://tsubakit1.hateblo.jp/entry/2017/06/15/020309

参考:https://teratail.com/questions/111392

Instantiateのunity公式: https://docs.unity3d.com/jp/current/ScriptReference/Object.Instantiate.html

リストの部品がずれる場合

  1. prefub部品をダブルクリックして、RectTransformのTopとBottomを0にしてprefubを作り直す。
  2. prefub部品をダブルクリックして部品の中央をずらす。再度、prefubを作り直す。

リストの部品がずれる場合(NGパターン

以下パターンだと、コンテンツが入らなかったり、スクロールが戻されたりして失敗する

  1. ContentSizeFitterのチェックを外すとか
  2. ContentのHeightを3000とかに以下のようにプログラムで広げるとか

ContentのHeightを動的に変更

GameObject panel = GameObject.Find("/Canvas/Scroll View/Viewport/Content/Panel");
panel.GetComponent<RectTransform>().sizeDelta = new Vector2(w, h);

リストの高さが狭い時

VerticalLayoutGroupのspacingを200とかいれて間隔を空ける

リストのスクロールが下に行かない場合

  1. ScrollViewのViewportのContentの下にAddComponentでContentSizeFitterを追加
  2. ContentSizeFitterのVerticalfitをUnconstrainedからPreferredSizeにする