第一次遇到这种需求,本来以为很难,没想到试了一下以后没啥难度,所以记录一下
首先新建一个scroll view,然后在content里面添加vertical layout group和content size fitter这两个组件。(vertical layout group 的 spacing要设置成10左右,这一步是关键)
然后在content里面放几个按钮,充当标题栏和内容栏
然后在脚本中给按钮赋值,这样就可以使用代码控制按钮了
cs
public Button 标题;
public Button 内容1;
public Button 内容2;
public Button 标题2;
public Button 内容3;
public Button 内容4;
// Start is called before the first frame update
void Start()
{
标题.onClick.AddListener(new UnityEngine.Events.UnityAction(ShowOrHideBtn));
标题2.onClick.AddListener(new UnityEngine.Events.UnityAction(ShowOrHideBtn2));
}
// Update is called once per frame
void Update()
{
}
private void ShowOrHideBtn()
{
if(内容1.gameObject.activeSelf)
{
内容1.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容1.transform.gameObject.SetActive(false); });
内容2.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容2.transform.gameObject.SetActive(false); });
}
else
{
内容1.transform.gameObject.SetActive(true);
内容1.transform.DOScaleY(1, 0.3f);
内容2.transform.gameObject.SetActive(true);
内容2.transform.DOScaleY(1, 0.3f);
}
}
private void ShowOrHideBtn2()
{
if (内容3.gameObject.activeSelf)
{
内容3.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容3.transform.gameObject.SetActive(false); });
内容4.transform.DOScaleY(0, 0.3f).OnComplete(() => { 内容4.transform.gameObject.SetActive(false); });
}
else
{
内容3.transform.gameObject.SetActive(true);
内容3.transform.DOScaleY(1, 0.3f);
内容4.transform.gameObject.SetActive(true);
内容4.transform.DOScaleY(1, 0.3f);
}
}
效果如下: