Massive Picker
画面外にでたアイテムをリサイクルすることでパフォーマンスを向上させたPickerです。
アイテムのサイズが固定になるデメリットがあります. その代わりに大量のアイテムを扱うことができます.
このページではMassiveVerticalPickerを例にMassivePickerの構造を説明します.
MassiveVerticalPickerはメニューの [GameObject]/[UI]/[Picker]/[Massive Vertical Picker]をクリックすることで追加できます.
Picker と同様のオブジェクトについては説明していません.
MassiveVerticalPicker
ルートオブジェクトです.
Column
カラムの本体です. 複数のカラムを配置する場合はこのオブジェクトを複製(Ctrl+D)してください.
MassivePickerScrollRectコンポーネントがアタッチされています.
MassivePickerScrollRectコンポーネントの設定項目
多くの項目は Picker と共通です. ここではMassivePickerScrollRect特有のものだけを説明します.
項目 |
説明 |
---|---|
Deactive Item On Awake |
Awake()上でItemSourceに設定されたオブジェクトに対しSetActive(false)を呼ぶことをセットするフラグです.
Item Source がシーン上に配置されているオブジェクトであれば
このフラグにtrueをセットすることでそのオブジェクトを不可視にできます.
Item Source がResources上のプレハブであればこのフラグをセットする必要はありません.
|
Item Source |
アイテムのコピー元となるGameObjectです.
MassivePickerItemを継承したコンポーネントがアタッチされている必要があります.
Deactive Item On Awake がセットされている場合、このオブジェクトのSetActive(false)が呼ばれます.
|
Item Size |
アイテムのサイズです. |
Item Count |
アイテムの個数です. |
Content
MassivePickerLayoutGroup がアサインされています.
アイテムは自動生成されるため子供へのアイテムの配置は不要です.
アイテムのセット方法
MassivePickerではアイテムは次のフローで生成されます.
1. Instantiate( massivePickerScrollRect.itemSource ) によりアイテムが複製され、 Contentの子供に配置されます.
2. 複製されたアイテムに対し item.GetComponent<MassivePickerItem>().SetItemContents( scrollRect, itemIndex ) が呼ばれその内容がセットされます.
もしアイテムが画面外に配置され不要になった場合, SetActive(false) が呼ばれアイテムは不可視になります.
再び画面外に配置されたときは SetActive(true)とSetItemContents() が呼ばれアイテムは可視状態になります.
MassiveVerticalPickerではアイテムにExampleStringItemがアタッチされています.
このスクリプトはアイテムのテキストに "Item"+itemIndex をセットします.
ItemSource
表示されるアイテムのコピー元となるオブジェクトです.
MassiveVerticalPicker ではPicker内部に配置されていますが, 配置場所に制限はありません.
その他のオブジェクト
Pickerと同様です.