Exemple #1
0
        protected virtual void InitializeIfNeeded()
        {
            if (isInitialized)
            {
                return;
            }
            scrollRect = this.GetComponent <ScrollRect>();
            layoutRp.Subscribe(OnLayoutChanged);


            scrollRect.OnValueChangedAsObservable()
            .Select(pos => layoutRp.Value == Layout.Horizontal ? pos.x : pos.y)
            .Pairwise()
            .Subscribe(x =>
            {
                var val = x.Current - x.Previous;
                if (val < 0)
                {
                    OnScrollUp(-val);
                }
                else
                {
                    OnScrollDown(val);
                }
            });

            pool = new ListItemPool <T>(scrollRect.content, prototype.GetComponent <ListViewItem <T> >());
            pool.AddTo(this);

            pool.OnCreateItem
            .Subscribe(x => items.Add(x));

            pool.OnCreateItem
            .Select(x => x.GetComponent <RectTransform>())
            .Subscribe(SetItemLayout);

            isInitialized = true;
        }