/// Credit setchi (https://github.com/setchi) /// Sourced from - https://github.com/setchi/FancyScrollView namespace UnityEngine.UI.Extensions { /// /// のセルを実装するための抽象基底クラス. /// が不要な場合は /// 代わりに を使用します. /// /// アイテムのデータ型. /// の型. public abstract class FancyScrollRectCell : FancyScrollViewCell where TContext : class, IFancyScrollRectContext, new() { /// public override void UpdatePosition(float position) { var (scrollSize, reuseMargin) = Context.CalculateScrollSize(); var unclampedPosition = (Mathf.Lerp(0f, scrollSize, position) - reuseMargin) / (scrollSize - reuseMargin * 2f); var start = 0.5f * scrollSize; var end = -start; UpdatePosition(unclampedPosition, Mathf.Lerp(start, end, position)); } /// /// このセルの位置を更新します. /// /// /// ビューポートの範囲で正規化されたスクロール位置. /// の値に基づいて /// 0.0 ~ 1.0 の範囲を超えた値が渡されることがあります. /// /// ローカル位置. protected virtual void UpdatePosition(float position, float viewportPosition) { } } /// /// のセルを実装するための抽象基底クラス. /// /// アイテムのデータ型. /// public abstract class FancyScrollRectCell : FancyScrollRectCell { /// public sealed override void SetupContext(FancyScrollRectContext context) => base.SetupContext(context); } }