/// <summary> /// 初始化渲染脚本 /// </summary> virtual public void InitRendererList(DynamicInfinityItem.OnSelect OnSelect, DynamicInfinityItem.OnUpdateData OnUpdate) { if (_hasInited) { return; } //转换器 _rectTransformContainer = transform as RectTransform; //获得蒙版尺寸 _maskSize = transform.parent.GetComponent <RectTransform>().rect.size; _scrollRect = transform.parent.GetComponent <ScrollRect>(); //通过蒙版尺寸和格子尺寸计算需要的渲染器个数 _rendererCount = columnCount * (Mathf.CeilToInt(_maskSize.y / _GetBlockSizeY()) + 1); _UpdateDynmicRects(_rendererCount); _listItems = new List <DynamicInfinityItem>(); RectTransform rectTran = null; for (int i = 0; i < _rendererCount; ++i) { GameObject child = GameObject.Instantiate(renderGO); rectTran = child.GetComponent <RectTransform>(); rectTran.SetParent(transform); rectTran.localRotation = Quaternion.identity; rectTran.localScale = Vector3.one; child.layer = gameObject.layer; DynamicInfinityItem dfItem = child.GetComponent <DynamicInfinityItem>(); if (dfItem == null) { throw new Exception("Render must extend DynamicInfinityItem"); } _listItems.Add(dfItem); _listItems[i].DRect = _dictDRect[i]; _listItems[i].OnSelectHandler = OnSelect; _listItems[i].OnUpdateDataHandler = OnUpdate; child.SetActive(false); _UpdateChildTransformPos(child, i); } _SetListRenderSize(_rendererCount); _hasInited = true; }
/// <summary> /// 初始化渲染脚本 /// </summary> public virtual void InitRendererList(DynamicInfinityItem.OnSelect OnSelect, DynamicInfinityItem.OnUpdateData OnUpdate) { if (mHasInited) { return; } //转换器 mRectTransformContainer = transform as RectTransform; //获得蒙版尺寸 mMaskSize = transform.parent.parent.GetComponent <RectTransform>().sizeDelta; mScrollRect = transform.parent.parent.GetComponent <ScrollRect>(); transform.GetComponent <RectTransform>().sizeDelta = Vector2.zero; //通过蒙版尺寸和格子尺寸计算需要的渲染器个数 mRendererCount = ColumnCount * (Mathf.CeilToInt(mMaskSize.y / GetBlockSizeY()) + 1); _UpdateDynmicRects(mRendererCount); mList_items = new List <DynamicInfinityItem>(); for (int i = 0; i < mRendererCount; ++i) { GameObject child = GameObject.Instantiate(RenderGO); child.transform.SetParent(transform); child.transform.localRotation = Quaternion.identity; child.transform.localScale = Vector3.one; child.layer = gameObject.layer; DynamicInfinityItem dfItem = child.GetComponent <DynamicInfinityItem>(); if (dfItem == null) { throw new Exception("Render must extend DynamicInfinityItem"); } mList_items.Add(dfItem); mList_items[i].DRect = mDict_dRect[i]; mList_items[i].OnSelectHandler = OnSelect; mList_items[i].OnUpdateDataHandler = OnUpdate; child.SetActive(false); _UpdateChildTransformPos(child, i); } _SetListRenderSize(mRendererCount); mHasInited = true; }