UG1L7——滚动视图和分组

本章代码关键字

1
2
3
4
GUI.BeginGroup()        //开始分组,传入位置,它将决定接下来的UI控件绘制是在相对于哪个位置绘制,以及UI控件的显示的范围
GUI.EndGroup() //结束分组
GUI.BeginScrollView() //开始绘制滚动列表
GUI.EndScrollView() //结束绘制滚动列表

分组

用于批量控制控件的位置,可以理解为包裹着的控件加了一个父对象
可以通过控制分组来批量控制被包裹控件的位置

根据分组传入的位置和尺寸,决定了接下来的UI控件绘制是在相对于哪个位置绘制,以及UI控件的显示的范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public Rect groupPos;

private void OnGUI()
{
#region 分组
/* 用于批量控制控件的位置
* 可以理解为 包裹着的控件加了一个父对象
* 可以通过控制分组来批量控制被包裹控件的位置
*/
GUI.BeginGroup(groupPos);

GUI.Button(new Rect(0, 0, 100, 50), "测试按钮");
GUI.Label(new Rect(0, 60, 100, 20), "Label信息");

GUI.EndGroup(); //与GUI.BeginGroup()成对出现!!!
#endregion
}

滚动列表

类似于分组,也可以用于批量控制控件的位置和显示尺寸,
但是当所有内容的尺寸大于可见内容的尺寸时,滚动列表可以水平或者垂直滚动显示,以改变可见内容
效果类似于其他GUI系统的滚动列表

  • 第一个参数,可见部分的尺寸
  • 第二个参数,当前滚动条所在的坐标
  • 第三个参数,所有内容的尺寸(决定可滚动的范围)
  • 第四个参数,是否总是显示横向滚动条(尽管可见内容大于所有内容)
  • 第五个参数,是否总是显示纵向滚动条(尽管可见内容大于所有内容)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public Rect scPos;
private Vector2 nowPos;
public Rect showPos;

private string[] strs = new string[] { "123", "234", "222", "111" };

private void OnGUI()
{
#region 滚动列表
//第一个参数,可见部分的尺寸
//第二个参数,当前滚动条所在的坐标
//第三个参数,所有内容的尺寸
//第四个参数,是否总是显示横向滚动条(尽管可见内容大于所有内容)
//第五个参数,是否总是显示纵向滚动条(尽管可见内容大于所有内容)
nowPos = GUI.BeginScrollView(scPos, nowPos, showPos, false, false);

GUI.Toolbar(new Rect(0, 0, 300, 50), 0, strs);
GUI.Toolbar(new Rect(0, 60, 300, 50), 0, strs);
GUI.Toolbar(new Rect(0, 120, 300, 50), 0, strs);
GUI.Toolbar(new Rect(0, 180, 300, 50), 0, strs);

GUI.EndScrollView(); //与 GUI.BeginScrollView()成对出现!!!
#endregion
}