コード例 #1
0
ファイル: ListViewBase.cs プロジェクト: jump2me/ListView
    protected void Init(RectTransform _rectTransform, ObservableList <TYPE> _dataProvider, params GameObject[] _prefabs)
    {
        ViewComponent = _rectTransform.gameObject.AddComponent <ViewComponent>();
        DataProvider  = _dataProvider;

        RenderedDataList = new List <TYPE>();

        ListItemInfoQueueByPrefabName = new Dictionary <string, Queue <ListItemInfo> >();

        ViewComponent.ScrollEvent += OnScroll;

        RegisterEvents();

        ListItemRendererPool = new SimpleGameObjectPool();

        PrefabByName     = new Dictionary <string, GameObject>();
        PrefabSizeByName = new Dictionary <string, Vector2>();
        foreach (GameObject prefab in _prefabs)
        {
            if (PrefabByName.ContainsKey(prefab.name) == false)
            {
                PrefabByName.Add(prefab.name, prefab);

                var rectTransform = prefab.GetComponent <RectTransform>();
                PrefabSizeByName.Add(prefab.name, rectTransform.rect.size);
            }
        }
    }
コード例 #2
0
    private void InitScrollView()
    {
        RectTransform itemTemplateLine = testData.itemTemplateLine;

        poolEdge = new SimpleGameObjectPool(itemTemplateLine.gameObject, 100);
        float lineHeight = itemTemplateLine.rect.height;

        foreach (var edge in testData.edges)
        {
            Vector2 pos0 = testData.nodes[edge[0]];
            Vector2 pos1 = testData.nodes[edge[1]];

            Vector2 pos    = 0.5f * (pos0 + pos1);
            float   length = Vector2.Distance(pos0, pos1);
            float   rot    = Vector2.SignedAngle(pos1 - pos0, Vector2.right);
            var     handle = scrollRect.AddChild(
                () => {
                GameObject go = poolEdge.Get();
                go.transform.SetParent(this.scrollRect.content, false);
                RectTransform r    = go.GetComponent <RectTransform>();
                Vector2 size       = r.rect.size;
                size.x             = length;
                r.sizeDelta        = size;
                Vector3 angles     = r.localEulerAngles;
                angles.z           = rot;
                r.localEulerAngles = angles;
                r.SetAsFirstSibling();
                return(r);
            },
                (rect) => { poolEdge.Recycle(rect.gameObject); },
                (pos0 + pos1) * 0.5f,
                new Vector2(length, lineHeight),
                rot);
            edgeHandles.Add(handle);
        }

        RectTransform itemTemplateIcon = testData.itemTemplateIcon;

        poolIcon = new SimpleGameObjectPool(itemTemplateIcon.gameObject, 100);
        Vector2 iconSize = itemTemplateIcon.rect.size;

        foreach (var iconPos in testData.nodes)
        {
            var handle = scrollRect.AddChild(
                () => {
                GameObject go = poolIcon.Get();
                go.transform.SetParent(this.scrollRect.content, false);
                RectTransform r = go.GetComponent <RectTransform>();
                r.SetAsLastSibling();
                return(r);
            },
                (rect) => { poolIcon.Recycle(rect.gameObject); },
                iconPos,
                iconSize,
                0);
            iconHandles.Add(handle);
        }

        scrollRect.SetDirty(true);

        scrollRect.normalizedPosition = new Vector2(0, 0.5f);
    }