由于我经常时间一长就忘记,到要用的时候又要查,又要摸索,很浪费时间,所以写下这篇文章。
scrollview就是一个能上下或者左右拖动的ui列表,背包、展示多个按钮等情况的时候会用到。
要组成一个完整能用的ScrollView,需要以下几个组件:
scroll rect、 mask、各种layout。大致ui层级结构如下:
先说说scroll rect ,这个东西是位于最上面父节点的组件 content属性下的物体是方各种item的;horizontal和vertical是各种垂直横行拖动;viewprot显示item的框,需要有mask组件。
然后是content,它下面放各种item1、2、3、4...,想要让它能自动排列item项,需要有下面那三个组件,选一个就好(这些组件的里面有些默认选项,强烈建议勾都去掉)
自动生成的物体item放在content节点下。
content的大小适不适中,关系到最后的拖动效果。太大的话最后结果会有剩余的空余地方,很不好看;太小的话最后结果可能会造成无论怎么拖动,都看不到所有的item项。
为了应对上述所说的情况,我们要对content物体的rect transform控件进行设置,以下以Vertical layout Group形式进行代码示例(在这之前,content的竖向大小要设置成最小):
RectTransform rect = concent.GetComponent<RectTransform>();//获取content的rect transform组件 //从某某配置表获取的item个数 Dictionary<string, string>.Enumerator it = dic_sceneName.GetEnumerator(); while (it.MoveNext()) { GameObject btn_item = GameObject.Instantiate(btn_SelectItem.gameObject); btn_item.transform.parent = concent.transform; btn_item.gameObject.SetActive(true); float btn_rect = btn_SelectItem.GetComponent<RectTransform>().rect.height;//获取单个按钮的高度 rect.offsetMin -= new Vector2(0, btn_rect);//对content的高度进行修改 }
这样就能让content获得合适的大小了。
想要知道设置rect transform大小的其他属性的方法在我的另一篇文章里,链接:https://www.cnblogs.com/Transmuter/articles/11077520.html