|
|
(同じ利用者による、間の18版が非表示) |
行1: |
行1: |
− | ==リストのUIを作る==
| + | [[Unity/リスト表示/通常]] |
− | [[unity/UIScrollView]] [ショートカット] | + | |
| | | |
− | #リスト内の部品はPanelで作ってprefub化する
| + | [[Unity/リスト表示/使いまわし]] |
− | #prefubはAssets/Resourcesにいれる
| + | |
− | | + | |
− | 参考:https://tech.pjin.jp/blog/2016/08/30/unity_skill_3/
| + | |
− | | + | |
− | ==prefubを画面にロード==
| + | |
− | 参考:[[unity/3d]] [ショートカット]]
| + | |
− | | + | |
− | リストの部品(panel)をprefubからロードする
| + | |
− | # Ui/Panelを生成し、Textやボタンなどを貼り付ける
| + | |
− | #Assets/Resourcesの中にPanelをドラッグするとprefubができる
| + | |
− | #以下のようにインスタンスを生成する
| + | |
− | | + | |
− | GameObject prefab = (GameObject)Resources.Load("HogePanel");
| + | |
− | Vector3 position = new Vector3(x, y, z);
| + | |
− | GameObject obj = Instantiate(prefab, position, Quaternion.identity);
| + | |
− | obj.name = "HogePanel1";
| + | |
− | | + | |
− | #"Scroll View/Viewport/Content"にAddComponentsで、VerticalLayoutGroupを追加する
| + | |
− | #VerticalLayoutGroupのControlChildSizeにチェック入れる。
| + | |
− | #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
| + | |
− | | + | |
− | ==リストの部品がずれる場合==
| + | |
− | #prefub部品をダブルクリックして、RectTransformのTopとBottomを0にしてprefubを作り直す。
| + | |
− | #そこにprefubのインスタンスを生成する
| + | |
− | | + | |
− | | + | |
− | ==リストの部品がずれる場合(NGパターン==
| + | |
− | 以下パターンだと、コンテンツが入らなかったり、スクロールが戻されたりして失敗する
| + | |
− | #ContentSizeFilterのチェックを外すとか
| + | |
− | #ContentのHeightを3000とかに以下のようにプログラムで広げるとか
| + | |
− | | + | |
− | ContentのHeightを動的に変更
| + | |
− | GameObject panel = GameObject.Find("/Canvas/Scroll View/Viewport/Content/Panel");
| + | |
− | panel.GetComponent<RectTransform>().sizeDelta = new Vector2(w, h);
| + | |