UnityでUITableViewみたいなリスト表示をする

botman_orange Unity

UnityHub-2.4.3 Unity-2020.3.6f1 macOS-11.2.1

はじめに

Unity も C# もさわりたてなのでメモリリークとかよろしくない書き方になっているかもしれませんがとりあえず UITableView みたいな一覧表示ができました。セルを再利用してるから軽いはず(たぶん。。。)。

こんな感じでリスト表示ができてセル押下で選択もできます!

list_1

ソース(GitHun)

下記の本の「Part3 現場で使える UI 実装ー第2章 uGUI を便利に使うースクロール-Scroll Rect の拡張機能」のソースを参考にしました。

ステップアップUnity──プロが教える現場の教科書 WEB DB PRESS plus

新品価格
¥2,948から
(2021/5/3 20:11時点)

使い方

  1. セルを Prefab 化する
    SceneButton を置いて Assets にドラッグ&ドロップします。
  2. ListViewCell を継承したスクリプトを作成する

  3. Prefab 化したセルにスクリプトを設定する
    cell
  4. SceneScrollView を配置する
  5. ScrollViewListView スクリプトを設定する
    listView
  6. 適当なスクリプトを設定して以下の様の記載する

完成!!!

課題

いくつか課題がありますが難しいのであきらめました。

  1. 画面サイズが変わった場合にセル数がおかしくなる
    ScrollView の高さとセルの高さから必要なセル数を計算する処理を画面サイズ変更時にもやる必要がある?
  2. 上下に無限にスクロールできてしまう
    cell_height
  3. 指定の位置にコードでスクロールしたい
    verticalNormalizedPosition 使えばできるかと思ったのですが難しいのであきらめました。
  4. ReloadData() 後もスクロール位置を保持したい
    こちらも難しいのでリロード時は一番上へ戻すようにしました。

2021/05/26 こちらは解決しました!
セルの高さを ScrollView 上と Prefab 化したセルの二箇所で行う必要がある(しないとサイズが合わない)

cell2

おわりに

とりあえず UITableView ぽいものができました。「セクションつけたい!」「セルの高さ可変にしたい!」とか色々やろうと思うと難しいです。。。

もっと UITableView ぽいやつ探せば何かありそう。

Unity, C# ともにさわり始めたばかりなので何か間違いなどあればご指摘いただけると幸いです。

コメント

タイトルとURLをコピーしました