Label 控件:
Label 控件适合用来显示文本信息或者图片,它不会晌应鼠标或键盘消息。
static function Label( posittion : Rect , text:string );
第一个参数不变 第二个参数可以为: image:Texture 、 content:GUIContent
或者三个参数 第一个参数不变 、 test:string , style:GUIStyle 、 content:GUIContent , style:GUIStyle .
position: 屏幕绘制区域 、 text :显示的文本 、 image :显示的图片 content:控件内容包含文字、图片、提示 返回void
style : 控件的GUIStyle 风格
CUI.Label (Rect (10、 10、 100、 20) , "Hello World" )显示文字
public Texture2D texture;
GUI.Label( Rect(10,40,texture.width, texture.height),texture); 显示图片
Box 控件
Box控件用来绘制带有边框背景的文字或图片
static function Box( position : Rect , text :String) : void
static function Box( position : Rect , image : Texture) :void
static function Box(position : Rext , content : GUIContent) : void
static function Box( position : Rect , text:String , style:GUIStyle):void
static function Box(position : Rect , image:Texture , style:GUIStyle):void
static function Box(Position : Rect , content:GUIContent , style:GUIStyle):void
position : 屏幕绘制区域
text : 要显示的文本
image:要显示的图片
content : 控件内容,包含文字,图片,提示
style : 控件的GUIStyle 风格
GUI.Box(Rect(0,0,Screen.width*0.5,Screen.height*0.5),"This is title");
Button 控件
Button控件用来绘制晌应单击事件的按钮
具体参数跟Label 和 Box 一样 只是返回 boolean
当有按钮单击事件发生时,button函数返回true,否则返回false,因此按钮的事件处理脚本需要写在控件代码if
判断语句条件为true的代码区域中。
var btnTexture : Texture;
function OnGUI()
{
if( !btnTexture )
{
return ;
}
if( GUI.Button( Rect( 10, 10 , 50 , 50),btnTexture))
Debug.Log("asd")
}
RepeatButton控件
Button控件在每次单击事件中只相应一次,如果想处理鼠标左键长按
的事件,可以使用RepeatButton控件。RepeatButton会在左键按下期间一直返回true
函数申明参数同上返回 boolean
if( GUI.RepeatButton( Rect(10,70,50,30),"Click"))
Debug.Log("Click the Button")
TextField控件
在游戏中,经常需要用到信息输入的窗口,比如聊天窗、用户信息的输入
等,这些情况可以使用TextField控件
static function TextField( position:Rect,text:String , maxLength:int):String
图片参数换成 int 类型参数 返回String
maxLength : 字符串最大长度
PasswordField控件
PasswordField 控件用于绘制密码输入框,经常用于用户登录界面中
static function PasswordField( position:Rect , password:String , maskChar:char):String
static function PasswordField( position:Rect , password:String , maskChar:char,maxLength:int):String
static function PasswordField( position:Rect , password:String , maskChar:char ,style:GUIStyle):String
static function PasswordField( position:Rect , password:String , maskChar:char ,maxLength:int,style:GUIStyle):String
password : 编辑框中的密码字符串
maskChar : 密码字符串的掩码字符
TextArea控件
TextArea控件与TextFied的用法类似,区别就是TextFied是单行的,TextArea可以编辑多行的文字.
函数同 TextField
Toggle控件
Toggle控件可以用于制作开关按钮,每次单击,它都会在开和关的状态之间切换。
static function Toggle( position:Rect , value:boolean , text:String):boolean
image : Texture
content:GUIContent
value : 按钮开关的状态
ToolBar 控件
ToolBar控件适用于绘制一组按钮,在这些按钮中同时只激活—个,可以用来制作工具栏
static function Toolbar( position:Rect , selected:int ,texts:String[]):int
images:Texture[]
content:GUIContent[]
+style:GUIStyle
selected : 当前选择按钮的序号
返回 int
var toolbarInt : int = 0;
var toolbarStrings : String[] = { "Toolbar1" , "Toolbar2" , "Toolbar3"};
function OnGUI()
{
toolbatInt = GUI.Toolbar(Rect(25,25,250,30),toolbarInt,toolbarStrings);
}
Slider 控件
滑动条slider是一种很常用的界面元素,可用在音量调整、进度显示、数值调整的CUI界面中。
static function HorizontalSlider( position : Rect , value : float , leftvalue :float , rightvalue:float
slider:GUIStyle , thumb:GUIStyle):float
static function VerticalSlider( position:Rect,value:float,topvalue:float,bottomvalue:float):float
static function VerticalSlider(position:Rect,value:float,topValue:float,bottimvalue:float,slider:GUIStyle,thumb:GUIStyle):float
topValue :滑动条顶部对应的数值
bottomValue : 滑动条底部对应的数值
value : 滑动条的值与滑块对应
leftValue :滑动条左侧对应的数值
rightValue :滑动条右侧对应的数值
slider 拖动区域的GUIStyle样式
thumb : 滑块的GUIStyle样式
返回值为 float
var hSliderValue : float = 0.0 //水平滑动条数值
var vSliderValue : float = 0.0 //垂直滑动条数值
function OnGUI()
{
hSliderValue=GUI.HorizontalSlider( Rect(50,25,100,30),hSliderValue,0.0,10.0);
GUI.Lable( Rect(25,22,100,30),hSliderValue.ToString("0.00"));//显示水平滑动条数值
vSliderValue = GUI.VerticalSlider(Rect(25,70,30,100),vSliderValue,0.0,10.0);
GUI.Lable(Rect(22,170,100,30),vSliderValue.ToString("0.00"));
}
Scrollbar 控件
滚动条scrollbar常用于页面区域的滚动,例如文档浏览中
在Unity中scrollbar控件分为水平和垂直2种,对应的GUI函数为Horizontascrolibar和VerticalScrollbar;
static function HorizontalScrollbar( position:Rect,Value:float,size:float,leftValue:float,rightValue:float):float;
static function HorizontalScrollbar(position:Rect,value:float,size:float,leftValue:float,rightValue:float,style:GUIStyle):float
static function VertiacalScrollbar(....)
static function VertiacalScrollbar(....)
size:能看到的区域大小;
ScrollView 控件
ScrollView用来在GUI界面中绘制一个滚动视图区域,并且可以通过滚动条来控制要显示的区域内容。
Window窗口
如果想让窗口可拖动,在绘制函数中调用DragWindow函数可以设置窗口的拖动位置。
static function Window(id:int ,clientRect:Rect,func:WindowFunction,text:String):Rect
static function Window(id:int ,clientRect:Rect,func:WindowFunction,content:GUIContent):Rect
+style:GUIStyle
id : 每个窗口的唯一ID,用于接口函数调用
clientRect : 窗口在屏幕上的显示区域,窗口控件在该区域内绘制
func :绘制窗口控件所调用的函数,该函数需要传入窗口ID
text :窗口标题
image:窗口上显示的图片
GUILayout 自动布局
在Unity中GUI控件的布局方式有两种,一种为固定布局,即在绘制控件的时
候将位置参数传入,指定控件的精确位置,到目前为止本章前面的示例中都是使
用固定布局的方式;GUI还支持控件的自动布局,自动布局适用于控件数
量动态改变的情况,或者是有时候开发耆不太在乎控件的精确位置,而只是想让
它们按一些简单方式显示出来就好。
如果想使用自动布局,那么需要使用CUlLayout类来替代前面例子中使用的
CUi类,并旦去掉Rect()位置参数。
GUILayout.Button ("I am a Layout Button");
区域 Area
主要是针对自动布局的可以规定布局的范围使用GUILayout.BeginArea 和 GUILayout.EndArea
GUILayout.Button("I am not inside an Area");
GUILayout.BeginArea(Rect(Screen.width/2,Screen.height/2,300,300));
GUILayout.Button("I am completely inside an Area");
GUILayout.EndArea();