/// Credit setchi (https://github.com/setchi) /// Sourced from - https://github.com/setchi/FancyScrollView namespace UnityEngine.UI.Extensions { /// /// のセルを実装するための抽象基底クラス. /// が不要な場合は /// 代わりに を使用します. /// /// アイテムのデータ型. /// の型. public abstract class FancyCell : MonoBehaviour where TContext : class, new() { /// /// このセルで表示しているデータのインデックス. /// public int Index { get; set; } = -1; /// /// このセルの可視状態. /// public virtual bool IsVisible => gameObject.activeSelf; /// /// の参照. /// セルとスクロールビュー間で同じインスタンスが共有されます. 情報の受け渡しや状態の保持に使用します. /// protected TContext Context { get; private set; } /// /// をセットします. /// /// コンテキスト. public virtual void SetContext(TContext context) => Context = context; /// /// 初期化を行います. /// public virtual void Initialize() { } /// /// このセルの可視状態を設定します. /// /// 可視状態なら true, 非可視状態なら false. public virtual void SetVisible(bool visible) => gameObject.SetActive(visible); /// /// アイテムデータに基づいてこのセルの表示内容を更新します. /// /// アイテムデータ. public abstract void UpdateContent(TItemData itemData); /// /// 0.0f ~ 1.0f の値に基づいてこのセルのスクロール位置を更新します. /// /// ビューポート範囲の正規化されたスクロール位置. public abstract void UpdatePosition(float position); } /// /// のセルを実装するための抽象基底クラス. /// /// アイテムのデータ型. /// public abstract class FancyCell : FancyCell { /// public sealed override void SetContext(NullContext context) => base.SetContext(context); } }