Unity IMGUI

1.基础

创建每种控件的方法都是雷同的。第一个参数rect,表示位置;后面的参数表示控件的内容,可以包含字符串和图片,tooltips,可以单独用其中一个, 也可以使用GUIContent,使用多个。还有一个guistyle。

2.控件类型

Label

Button,抬起时返回true;RepeatButton,按住时一直返回true。通过if来判断

    void OnGUI () {
        if (GUI.RepeatButton (new Rect (25, 25, 100, 30), "RepeatButton")) {
            // This code is executed every frame that the RepeatButton remains clicked
        }
    }

TextField,可编辑。返回值为我们在文本框中编辑的内容。所以要把该返回值再用来创建TextField

TextArea,可编辑。与TextField区别是可以换行,可多行显示

	private string textFieldString = "text field";
	
	void OnGUI () {
		textFieldString = GUI.TextField (new Rect (25, 25, 100, 30), textFieldString);
	}
Toggle,一个checkbox,也就是单选框。同样的,需要把返回值再用来创建Toogle
    private bool toggleBool = true;
    
    void OnGUI () {
        toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle");
    }
ToolBar,创建多个button,同时只能选中一个。需要利用返回值。

SelectionGrid,相当于多行的ToolBar

    private int selectionGridInt = 0;
    private string[] selectionStrings = {"Grid 1", "Grid 2", "Grid 3", "Grid 4"};
    
    void OnGUI () {
        selectionGridInt = GUI.SelectionGrid (new Rect (25, 25, 300, 60), selectionGridInt, selectionStrings, 2);//2表示水平方向上排2个button
    
    }

HorizontalSlider和VerticalSlider水平滑动条和垂直滑动条。滑动时返回值在最大值和最小值之间改变。需要利用返回值

HorizontalScrollBar和VerticalScrollBar与滑动条区别不大。多了个参数,控制滑块大小。

ScrollView
使用GUI.BeginScrollView()和GUI.EndScrollView();其中BeginScrollView需要两个矩形作为参数。第一个矩形是ScrollView的可视范围。第二个矩形是ScrollView的拖动范围。


3.GUILayout
自动布局。GUI(固定布局)可以和GUILayout(自动布局)同时使用
在固定布局时,可以使用GUI.BeginGroup 和GUI.EndGroup来定义一个新的空间来放置多个控件,相当于在屏幕空间中定义了一个小的屏幕,超出这个小屏幕的空间将被裁减。
在自动布局时,可以用GUILayout.BeginArea和GUILayout.EndArea来实现类似的功能。在Area内的控件,像Box和Button这种带有背景的控件会自动拉伸到整个Area宽度。如果不在Area内,控件会有一个默认宽度,不会拉伸到和屏幕同宽。

可以使用GUILayoutOption来覆盖GUILayout的一些设置。GUILayoutOption我们不直接使用,而是使用GUILayout.Width等方法获取
    void OnGUI () {
        GUILayout.BeginArea (new Rect (100, 50, Screen.width-200, Screen.height-100));
        GUILayout.Button ("I am a regular Automatic Layout Button");
        GUILayout.Button ("My width has been overridden", GUILayout.Width (95));
        GUILayout.EndArea ();
    }

如上例,本来第二个button的宽度应该跟Area同宽,但是加上
GUILayout.Width (95)
之后,就只有95像素宽了。

还有如果Button不在Area里,会有一个默认宽度,也可以用GUILayout.Width来自定义宽度。

但是再宽也不会超过屏幕宽度或Area宽度(被裁减掉了)


自动布局时,默认情况下,各控件由上到下依次显示。
可以使用 GUILayout.BeginHoriztontal() , GUILayout.EndHorizontal() GUILayout.BeginVertical() , and  GUILayout.EndVertical() .来控制各控件水平显示或垂直显示。可嵌套。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值