使用UGUI ScrollView 排列不规则内容元素实现滑动效果
2017-07-14 15:09
891 查看
在开发Unity项目中有时会遇到滑动视图,这个一般实现方式都是使用UGUI组件ScrollView实现,搭配GridLayoutGroup,以及ContentSizeFitter实现,但是当项目中需要使用不规则内容元素动态载入的时候,GridLayoutGruop就变得不太适用。。。正好在项目中,遇到这个问题,我把我的做法分享一下,也算给自己记一个笔迹。
1,我的实现方式是,使用VerticalLayoutGroup,以及ContentSizeFitter,以及自己写的一个类似ContentSizeFitter代码实现。
实现效果简要说明:
具体实现步骤图示
步骤一:
步骤二:
步骤三:
步骤四:
步骤五:
步骤六:计算ScrollView显示区高度
1,我的实现方式是,使用VerticalLayoutGroup,以及ContentSizeFitter,以及自己写的一个类似ContentSizeFitter代码实现。
实现效果简要说明:
具体实现步骤图示
步骤一:
步骤二:
步骤三:
步骤四:
步骤五:
步骤六:计算ScrollView显示区高度
using System.Collections; using UnityEngine; public class ListUIMng : MonoBehaviour { public GameObject prefab; public Transform content; // Use this for initialization void Start() { SizeInit(); } // Update is called once per frame void Update () { } 4000 private void OnGUI() { if (GUI.Button(new Rect(20,100,100,50),"添加道具")) { GameObject tool = GameObject.Instantiate(prefab); tool.transform.parent = content.GetChild(1); StartCoroutine(SetHight()); } if (GUI.Button(new Rect(20, 300, 100, 50), "添加应用场景")) { GameObject scence = GameObject.Instantiate(prefab); scence.transform.parent = content.GetChild(content.childCount - 1); StartCoroutine(SetHight()); } } public void SizeInit() { StartCoroutine(SetHight()); } IEnumerator SetHight() { yield return new WaitForSeconds(0.1f); //采用高度累加的方式,避免动态加入元素,最后元素位置不刷新问题(通过第一个元素和最后元素计算,刷新延迟会出问题) float hight = 0; for (int i = 0; i < content.childCount; i++) { hight += content.GetChild(i).GetComponent<RectTransform>().sizeDelta.y; } Debug.Log("======hight==" + hight); RectTransform rect = content.GetComponent<RectTransform>(); rect.sizeDelta = new Vector2(rect.sizeDelta.x, hight); } }
相关文章推荐
- 使用ViewFlipper实现图片左右滑动效果
- 使用自定义RadioButton和ViewPager实现TabHost效果和带滑动的页卡效果。
- 横向滑动ViewGoup(左边菜单右边内容)效果的实现
- Qt使用QGraphicsView实现滑动窗体效果
- Android中使用ViewPager和PagerTabStrip实现页面滑动效果
- Qt使用QGraphicsView实现滑动窗体效果
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 使用ViewPager+GridView实现横向滑动的效果(二)
- 实现android左右滑动效果:ViewFlipper、ViewPager、HorizontalScrollView
- Android实现左右滑动指引效果(使用ViewPager)
- Android HorizontalScrollView结合GridView实现类似网易新闻那样的栏目滑动效果
- Qt使用QGraphicsView实现滑动窗体效果
- 使用ViewPager+GridView实现横向滑动的效果(一)
- 使用ViewPager和GridView配合,实现GridView横向水平滑动的效果。
- Qt使用QGraphicsView实现滑动窗体效果
- Android使用ViewFlipper实现左右滑动效果面
- Qt使用QGraphicsView实现滑动窗体效果
- Qt使用QGraphicsView实现滑动窗体效果
- android-使用ViewGroup实现左右滑动切换界面以及界面裂开的效果
- 使用ScrollView实现滚动效果 出现 ScrollView can host only one direct child (ScrollView只能包裹一个直接子元素)