![Unity3D開發(fā)標準教程-Unity3D圖形用戶界面基礎(chǔ)_第1頁](http://file4.renrendoc.com/view10/M03/25/23/wKhkGWW3dR2AcCIVAAKru1n16jw849.jpg)
![Unity3D開發(fā)標準教程-Unity3D圖形用戶界面基礎(chǔ)_第2頁](http://file4.renrendoc.com/view10/M03/25/23/wKhkGWW3dR2AcCIVAAKru1n16jw8492.jpg)
![Unity3D開發(fā)標準教程-Unity3D圖形用戶界面基礎(chǔ)_第3頁](http://file4.renrendoc.com/view10/M03/25/23/wKhkGWW3dR2AcCIVAAKru1n16jw8493.jpg)
![Unity3D開發(fā)標準教程-Unity3D圖形用戶界面基礎(chǔ)_第4頁](http://file4.renrendoc.com/view10/M03/25/23/wKhkGWW3dR2AcCIVAAKru1n16jw8494.jpg)
![Unity3D開發(fā)標準教程-Unity3D圖形用戶界面基礎(chǔ)_第5頁](http://file4.renrendoc.com/view10/M03/25/23/wKhkGWW3dR2AcCIVAAKru1n16jw8495.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Unity3D圖形用戶界面基礎(chǔ)
第1頁3.1GUI圖形用戶界面系統(tǒng)
3.1.1Button控件Button控件用于在界面上創(chuàng)建一個按鈕。當用戶點擊時會觸發(fā)相應(yīng)的功能,在游戲中通常用于界面、游戲功能、游戲設(shè)置的開關(guān)。1staticfunctionButton(position:Rect,text:String):bool
2staticfunctionButton(position:Rect,image:Texture):bool
3staticfunctionButton(position:Rect,content:GUIContent):bool
4staticfunctionButton(position:Rect,text:String,style:GUIStyle):bool第2頁3.1GUI圖形用戶界面系統(tǒng)
第3頁3.1.1Button控件12 if(GUI.Button(newRect(Screen.width/9,Screen.height/4,13 Screen.height/5,Screen.height/10),"按鈕")){ //通過第一種方法實現(xiàn)Button控件14 Debug.Log("staticfunctionButton(position:Rect,text:String):bool");15 }16 if(GUI.Button(newRect(Screen.width/3,Screen.height/4,17 Screen.height/5,Screen.height/5),test)){ //通過第二種方法實現(xiàn)Button控件18 Debug.Log("staticfunctionButton(position:Rect,image:Texture):bool");19 }3.1GUI圖形用戶界面系統(tǒng)
第4頁3.1.1Button控件20if(GUI.Button(newRect(Screen.width/2,Screen.height/4,21 Screen.height/5,Screen.height/10),guiContent)){ //通過第三種方法實現(xiàn)Button控件22 Debug.Log("staticfunctionButton(position:Rect,content:GUIContent):bool");23 }24 if(GUI.Button(newRect(Screen.width/1.5f,Screen.height/4,25 Screen.height/5,Screen.height/5),"按鈕4",guiStyle)){//通過第四種方法實現(xiàn)Button控件26 Debug.Log("staticfunctionButton(position:Rect,text:String,style:GUIStyle):bool");27 }}}3.1GUI圖形用戶界面系統(tǒng)
第5頁3.1GUI圖形用戶界面系統(tǒng)
3.1.2Label控件Label控件是在設(shè)備的屏幕上創(chuàng)建文本標簽或紋理標簽,一般用于提示用戶一些信息。1 staticfunctionLabel(position:Rect,text:string):void
2 staticfunctionLabel(position:Rect,image:Texture):void
3 staticfunctionLabel(position:Rect,content:GUIContent):void
4 staticfunctionLabel(position:Rect,content:GUIContent,style:GUIStyle):void第6頁3.1GUI圖形用戶界面系統(tǒng)
第7頁3.1.2Label控件13 GUI.Label(newRect(Screen.width/8.5f,Screen.height/7,//創(chuàng)建僅有文字的Label控件14 Screen.height/1.5f,Screen.height/8),"繪制只有文字的Label控件!");15 GUI.Label(newRect(Screen.width/8.5f,Screen.height/4.5f,//創(chuàng)建具有紋理圖片的Label控件16 Screen.height/1.5f,Screen.height/8),texture);17 GUI.Label(newRect(Screen.width/8.5f,Screen.height/2.5f,//使用Conten的Label控件18 Screen.height/1.5f,Screen.height/8),guiContent);19 GUI.Label(newRect(Screen.width/8.5f,Screen.height/1.7f,//使用Content和Style的Label控件20 Screen.height/1.5f,Screen.height/8),guiContent2,guiStyle);3.1GUI圖形用戶界面系統(tǒng)
第8頁3.1GUI圖形用戶界面系統(tǒng)
3.1.3DrawTexture控件DrawTexture控件用于繪制紋理圖片,在使用GUI系統(tǒng)創(chuàng)建DrawTexture控件的時候,會有如下靜態(tài)方法供開發(fā)人員調(diào)用,沒有返回值。1 staticfunctionDrawTexture(position,image,scaleMode,alphaBlend,imageAspect):void第9頁3.1GUI圖形用戶界面系統(tǒng)
3.1.3DrawTexture控件第10頁3.1.3DrawTexture控件11GUI.DrawTexture(newRect(Screen.width/9,//使用ScaleAndCrop模式繪制的圖片12Screen.height/4,Screen.height/5,Screen.height/7),13texture,ScaleMode.ScaleAndCrop,true,0.0f);14GUI.DrawTexture(newRect(Screen.width/3.5f,//使用ScaleToFit模式繪制的圖片15Screen.height/4,Screen.height/5,Screen.height/7),16texture,ScaleMode.ScaleToFit,true,0.0f);3.1GUI圖形用戶界面系統(tǒng)
第11頁3.1.3DrawTexture控件17GUI.DrawTexture(newRect(Screen.width/2,//使用StretchToFill模式繪制的圖片18Screen.height/4,Screen.height/5,Screen.height/7),19texture,ScaleMode.StretchToFill,true,0.0f);20GUI.DrawTexture(newRect(Screen.width/2, //關(guān)閉混合通道效果21Screen.height/2,Screen.height/5,Screen.height/7),22texture2,ScaleMode.StretchToFill,false,0.0f);23GUI.DrawTexture(newRect(Screen.width/4,//開啟混合通道效果24Screen.height/2,Screen.height/5,Screen.height/7),25texture2,ScaleMode.StretchToFill,true,0.0f);3.1GUI圖形用戶界面系統(tǒng)
第12頁3.1GUI圖形用戶界面系統(tǒng)
3.1.4 Box控件Box控件用于繪制圖形化的盒子,在使用GUI系統(tǒng)創(chuàng)建Box控件的時候,會有如下部分靜態(tài)方法供開發(fā)人員調(diào)用,沒有返回值。1 staticfunctionBox(position:Rect,text:string):void
2 staticfunctionBox(position:Rect,image:Texture):void
3 staticfunctionBox(position:Rect,content:GUIContent):void
4 staticfunctionBox(position:Rect,text:string,style:GUIStyle):void第13頁3.1GUI圖形用戶界面系統(tǒng)
3.1.4 Box控件第14頁3.1.4 Box控件12GUI.Box(newRect(Screen.width/8.5f,Screen.height/7,13 Screen.height/5,Screen.height/5),"圖形化盒子!"); //使用第一種方法實現(xiàn)控件14 GUI.Box(newRect(Screen.width/4,Screen.height/7,15 Screen.height/5,Screen.height/5),texture); //使用第二種方法實現(xiàn)控件16 GUI.Box(newRect(Screen.width/8.5f,Screen.height/2.5f,17 Screen.height/5,Screen.height/5),guiContent); //使用第三種方法實現(xiàn)控件18 GUI.Box(newRect(Screen.width/4,Screen.height/2.5f, //使用第四種方法實現(xiàn)控件19 Screen.height/5,Screen.height/5),"這是一個使用GUIStyle的圖形化盒子!",guiStyle);3.1GUI圖形用戶界面系統(tǒng)
第15頁3.1GUI圖形用戶界面系統(tǒng)
3.1.5 TextField控件TextField控件用于創(chuàng)建單行文本編輯框,在其中可以編輯字符串。在使用GUI系統(tǒng)創(chuàng)建TextField控件的時候,會有如下四個靜態(tài)方法供開發(fā)人員調(diào)用,每當用戶編輯字符串時會返回被編輯的字符串。1 staticfunctionTextField(position:Rect,text:String):String
2 staticfunctionTextField(position:Rect,text:String,maxLength:int):String
3 staticfunctionTextField(position:Rect,text:String,style:GUIStyle):String
4 staticfunctionTextField(position:Rect,text:String,maxLength:int,style:GUIStyle):String第16頁3.1GUI圖形用戶界面系統(tǒng)
3.1.5 TextField控件第17頁3.1.5 TextField控件10 stringDemo1=GUI.TextField(newRect( //使用第一種方法創(chuàng)建的TextField11 Screen.width/8.5f,Screen.height/9.5f,12 Screen.height/1.5f,Screen.height/8),stringDemo1);13 stringDemo2=GUI.TextField(newRect( //使用第二種方法創(chuàng)建的TextField14 Screen.width/8.5f,Screen.height/3.9f,15 Screen.height/1.5f,Screen.height/8),stringDemo2,30);3.1GUI圖形用戶界面系統(tǒng)
第18頁3.1.5 TextField控件16 stringDemo3=GUI.TextField(newRect( //使用第三種方法創(chuàng)建的TextField17 Screen.width/8.5f,Screen.height/2.5f,18 Screen.height/1.5f,Screen.height/8),stringDemo3,guiStyle);19 stringDemo4=GUI.TextField(newRect( //使用第四種方法創(chuàng)建的TextField20 Screen.width/8.5f,Screen.height/1.8f,21 Screen.height/1.5f,Screen.height/8),stringDemo4,30,guiStyle);22 }}3.1GUI圖形用戶界面系統(tǒng)
第19頁3.1GUI圖形用戶界面系統(tǒng)
3.1.6 PasswordField控件PasswordField控件用于創(chuàng)建一個用于編輯密碼的文本編輯區(qū)。1 staticfunctionPasswordField(position:Rect,password:String
,maskChar:char):String
2 staticfunctionPasswordField(position:Rect,password:String
,maskChar:char,maxLength:int):String
3 staticfunctionPasswordField(position:Rect,password:String
,maskChar:char,style:GUIStyle):String
第20頁3.1GUI圖形用戶界面系統(tǒng)
3.1.6 PasswordField控件第21頁3.1.6 PasswordField控件publicclassDemo:MonoBehaviour{4 privatestringstringDemo="HelloWorld!"; //聲明字符串用于儲存密碼字段5 voidOnGUI(){ //重寫OnGUI方法,用于控件的繪制6 stringDemo=GUI.PasswordField(newRect(Screen.width/8.5f,Screen.height/9.5f,7 Screen.height/1.5f,Screen.height/8),stringDemo,'&',25);//通過第二種靜態(tài)方法創(chuàng)建控件8 }}3.1GUI圖形用戶界面系統(tǒng)
第22頁3.1GUI圖形用戶界面系統(tǒng)
3.1.7 TextArea控件TextArea控件用于創(chuàng)建一個多行的文本編輯區(qū),用于文字編輯。staticfunctionTextArea(position:Rect,text:String):StringstaticfunctionTextArea(position:Rect,text:String,maxLength:int,style:GUIStyle):String第23頁3.1GUI圖形用戶界面系統(tǒng)
3.1.7 TextArea控件第24頁3.1.7 TextArea控件publicclassDemo:MonoBehaviour{4 publicstringstringDemo; //聲明字符串,用于儲存編輯的字符串5 voidOnGUI(){6 stringDemo=GUI.TextArea(newRect(Screen.width/8.5f,//使用第一種靜態(tài)方法創(chuàng)建編輯區(qū)7 Screen.height/9.5f,Screen.height/1.5f,Screen.height/5),stringDemo);8 }}3.1GUI圖形用戶界面系統(tǒng)
第25頁3.1GUI圖形用戶界面系統(tǒng)
3.1.8 Toggle控件Toggle控件用于繪制一個開關(guān),通過控制開關(guān)的閉合來執(zhí)行一些具體的操作。Toggle控件用于繪制通過控制開關(guān)的閉合來執(zhí)行一些具體的操作按鈕,類似于單選按鈕。1 staticfunctionToggle(position:Rect,value:bool,text:String):bool
2 staticfunctionToggle(position:Rect,value:bool,image:Texture):bool
3 staticfunctionToggle(position:Rect,value:bool,content:GUIContent,style:GUIStyle):bool第26頁3.1GUI圖形用戶界面系統(tǒng)
3.1.8 Toggle控件第27頁3.1.8 Toggle控件7voidOnGUI(){ //重寫OnGUI方法,用于控件繪制8 if(!texture){ //判斷圖片是否添加9Debug.LogWarning("請?zhí)砑右粡垐D片");//如果沒有添加就打印警告,提示用戶添加10 return;11 }12textBool=GUI.Toggle(newRect(Screen.width/8.5f,//使用第一種靜態(tài)方法創(chuàng)建13Screen.height/7,Screen.height/5,Screen.height/5),textBool,"開關(guān)控件");14textureBool=GUI.Toggle(newRect(Screen.width/4,//使用第二種靜態(tài)方法創(chuàng)建15Screen.height/7,Screen.height/5,Screen.height/5),textureBool,texture);3.1GUI圖形用戶界面系統(tǒng)
第28頁3.1GUI圖形用戶界面系統(tǒng)
3.1.9SelectionGrid控件SelectionGrid控件用于創(chuàng)建一個網(wǎng)格按鈕。指定創(chuàng)建的按鈕的數(shù)量以及每一排放置的個數(shù),控件就會自動調(diào)整按鈕的大小以及布局。1 staticfunctionSelectionGrid(position:Rect,selected:int,texts:String[],xCount:int):int
2 staticfunctionSelectionGrid(position:Rect,selected:int,images:Texture[],xCount:int):int
3 staticfunctionSelectionGrid(position:Rect,selected:int,images:Texture[],xCount:int,style:GUIStyle):int第29頁3.1GUI圖形用戶界面系統(tǒng)
3.1.9SelectionGrid控件第30頁3.1.9SelectionGrid控件4publicTexture[]texture; //聲明紋理數(shù)組5 privatestring[]textStrings=newstring[]{"按鈕一","按鈕二","按鈕三","按鈕四"};//聲明字符串數(shù)組6 privateintindex; //第一個控件的索引7 privateintdeindex; //第二個控件的索引8 voidOnGUI(){9 index=GUI.SelectionGrid(newRect(Screen.width/40,Screen.height/7,Screen.width/5,10 Screen.height/4),index,textStrings,2); //使用第一種靜態(tài)方法,創(chuàng)建2*2的按鈕網(wǎng)格11 deindex=GUI.SelectionGrid(newRect(Screen.width/4,Screen.height/7,Screen.width/5,12 Screen.height/4),deindex,texture,2); //使用第二種靜態(tài)方法,創(chuàng)建2*2的按鈕網(wǎng)格3.1GUI圖形用戶界面系統(tǒng)
第31頁3.1GUI圖形用戶界面系統(tǒng)
3.1.10HorizontalScrollbar控件與VerticalScrollbar控件HorizontalScrollbar控件用于創(chuàng)建一個水平滾動條。VerticalScrollbar控件用于創(chuàng)建一個垂直滾動條。水平(垂直)滾動條控件,用戶都可以為其設(shè)定閾值。用戶可以在最大值與最小值之間移動。1 staticfunctionHorizontalScrollbar(position:Rect,value:float,size:float,leftValue:float,rightValue:float):float
2 staticfunctionHorizontalScrollbar(position:Rect,value:float,size:float,leftValue:float,rightValue:float, style:GUIStyle):float3 staticfunctionVerticalScrollbar(position:Rect,value:float,size:float,topValue:float,bottomValue:float,style:GUIStyle):float第32頁3.1GUI圖形用戶界面系統(tǒng)
3.1.10HorizontalScrollbar控件與VerticalScrollbar控件第33頁3.1.10HorizontalScrollbar控件與VerticalScrollbar控件3 publicclassDemo:MonoBehaviour{4 privatefloatvalue; //水平滾動條當前的數(shù)值5 privatefloatvalue2; //垂直滾動條當前的數(shù)值6 voidOnGUI(){ //重寫OnGUI函數(shù),用于控件繪制7 value=GUI.HorizontalScrollbar(newRect(Screen.width/13.5f,Screen.height/7,Screen.width8 /7.5f,Screen.height/8),value,0.1f,0.0f,1.0f); //通過第一種方法創(chuàng)建水平滾動條控件9 value2=GUI.VerticalScrollbar(newRect(Screen.width/4.5f,Screen.height/9.5f,Screen.width10 /8,Screen.height/3.5f),value2,0.1f,1.0f,0.0f); //通過第二種方法創(chuàng)建垂直滾動條控件3.1GUI圖形用戶界面系統(tǒng)
第34頁3.1GUI圖形用戶界面系統(tǒng)3.1.11HorizontalSlider控件與VerticalSlider控件HorizontalSlider控件用于在屏幕上創(chuàng)建一個水平滑桿,VerticalSlider控件用于創(chuàng)建一個垂直滑桿。
水平(垂直)滑桿控件,用戶都可以為其設(shè)定閾值。用戶可以拖動滑塊在最大值與最小值之間移動。1 staticfunctionHorizontalSlider(position:Rect,value:float,leftValue:float,rightValue:float): float2 staticfunctionHorizontalSlider(position:Rect,value:float,leftValue:float,rightValue:float, slider:GUIStyle,thumb:GUIStyle):float3 staticfunctionVerticalSlider(position:Rect,value:float,topValue:float,bottomValue:float):float4 staticfunctionVerticalSlider(position:Rect,value:float,topValue:float,bottomValue:float, slider:GUIStyle,thumb:GUIStyle):float第35頁3.1GUI圖形用戶界面系統(tǒng)
3.1.11HorizontalSlider控件與VerticalSlider控件第36頁3.1.11HorizontalSlider控件與VerticalSlider控件3 publicclassDemo:MonoBehaviour4 {5 privatefloatvalue;//水平滑塊當前的數(shù)值6 privatefloatvalue2;//垂直滑塊當前的數(shù)值7 voidOnGUI()8 {//重寫OnGUI函數(shù),用于控件繪制9 value=GUI.HorizontalSlider(newRect(Screen.width/13.5f,Screen.height/7,Screen.width10 /7.5f,Screen.height/8),value,0.0f,1.0f);//創(chuàng)建水平滑塊控件11 value2=GUI.VerticalSlider(newRect(Screen.width/4.5f,Screen.height/9.5f,Screen.width12 /8,Screen.height/3.5f),value2,1.0f,0.0f);//創(chuàng)建垂直滑塊控件3.1GUI圖形用戶界面系統(tǒng)
第37頁3.1GUI圖形用戶界面系統(tǒng)
3.1.11BeginGroup控件和EndGroup控件BeginGroup控件和EndGroup控件需要在一起配合使用以達到對屏幕上的各個控件進行分組。BeginGroup控件用于開始一個組,但必須配套EndGroup來結(jié)束一個組。1 staticfunctionBeginGroup(position:Rect):void2 staticfunctionBeginGroup(position:Rect,text:string):void
3 staticfunctionBeginGroup(position:Rect,image:Texture):void4 staticfunctionBeginGroup(position:Rect,content:GUIContent,style:GUIStyle):void第38頁3.1GUI圖形用戶界面系統(tǒng)
3.1.12BeginGroup控件和EndGroup控件
第39頁3.1.12BeginGroup控件和EndGroup控件3publicclassDemo:MonoBehaviour{4 publicfloatvalue=25.0f; //用于修改Group的位置5 publicfloatvalue2=3.5f;6 voidOnGUI(){7 GUI.BeginGroup(newRect(Screen.width/value,8 Screen.height/9.5f,300,200)); //使用BeginGroup將區(qū)域限制為300*200像素大小9 GUI.Box(newRect(0,0,300,200),10 "第一組\n被限制在400*300的區(qū)域內(nèi)"); //創(chuàng)建一個和限制區(qū)域相同大小的Box控件11 GUI.Button(newRect(50,50,200,50),"按鈕一");//創(chuàng)建Button控件3.1GUI圖形用戶界面系統(tǒng)
第40頁3.1.12BeginGroup控件和EndGroup控件12 GUI.Button(newRect(50,120,200,50),"按鈕二");13 GUI.EndGroup();//結(jié)束組,需和開始組一起使用14 GUI.BeginGroup(newRect(Screen.width/value2,15 Screen.height/9.5f,300,200)); //使用BeginGroup將區(qū)域限制為300*200像素大小16 GUI.Box(newRect(0,0,300,200),17 "第二組\n被限制在400*300的區(qū)域內(nèi)"); //創(chuàng)建一個和限制區(qū)域相同大小的Box控件18 GUI.Button(newRect(50,50,200,50),"按鈕三"); //創(chuàng)建Button控件19 GUI.Button(newRect(50,120,200,50),"按鈕四");20 GUI.EndGroup(); //結(jié)束組,需和開始組一起使用3.1GUI圖形用戶界面系統(tǒng)
第41頁3.1GUI圖形用戶界面系統(tǒng)
3.1.13BeginScrollView控件和EndScrollView控件ScrollView控件用于在屏幕上創(chuàng)建滾動視圖,通過一片小區(qū)域查看較大區(qū)域的內(nèi)容。BeginScrollView控件和EndScrollView控件需要配合使用成對存在。并且BeginScrollView控件會返回Vector2類型的返回值,用來記錄滾動條被修改的位置。1 staticfunctionBeginScrollView(position:Rect,scrollPosition:Vector2
,viewRect:Rect):Vector22 staticfunctionBeginScrollView(position:Rect,scrollPosition:Vector2
,viewRect:Rect,alwaysShowHorizontal:bool,alwaysShowVertical:bool,horizontalScrollbar:GUIStyle,verticalScrollbar: GUIStyle):Vector23 staticfunctionEndScrollView():void第42頁3.1GUI圖形用戶界面系統(tǒng)
3.1.13BeginScrollView控件和EndScrollView控件
第43頁3.1.13BeginScrollView控件和EndScrollView控件1 usingUnityEngine;2 usingSystem.Collections;3 publicclassDemo:MonoBehaviour{4 privateVector2scrollPosition=Vector2.zero; //聲明一個Vector2變量,儲存滾動的位置5 voidOnGUI(){ //重寫OnGUI函數(shù),用于控件繪制6scrollPosition=GUI.BeginScrollView(newRect(Screen.width/25,7 Screen.height/9.5f,300,200),scrollPosition,3.1GUI圖形用戶界面系統(tǒng)
第44頁3.1.13BeginScrollView控件和EndScrollView控件8 newRect(0,0,400,300),false,false);//創(chuàng)建一個300*200的滾動視圖,滾動內(nèi)容為400*3009 GUI.Box(newRect(0,0,400,300),"Box控件的大小和滾動視圖\n控件能夠查看的區(qū)域的大小相同");10 GUI.Button(newRect(0,0,80,50),"左上角");//創(chuàng)建四個按鈕放置在被查看區(qū)域的四個角11 GUI.Button(newRect(320,0,80,50),"右上角");12 GUI.Button(newRect(0,250,80,50),"左下角");13 GUI.Button(newRect(320,250,80,50),"右下角");14 GUI.EndScrollView();//創(chuàng)建結(jié)束滾動視圖控件15 }}3.1GUI圖形用戶界面系統(tǒng)
第45頁3.1GUI圖形用戶界面系統(tǒng)
3.1.14Window控件Window控件用于創(chuàng)建一個彈出窗口,窗口浮動在普通GUI控件之上。Window控件不同于其他控件,開發(fā)人員需要為GUI控件傳遞給它們一個單獨的函數(shù)放進窗口。并且可以使用一樣的函數(shù)創(chuàng)建多個窗口,但每個窗口都要有唯一的ID。在窗口中創(chuàng)建的其他控件都以Window控件的左上角為原點(0,0),并且Window控件可以獲取焦點。。1 staticfunctionWindow(id:int,clientRect:Rect,func:WindowFunction,text:string):Rect
2 staticfunctionWindow(id:int,clientRect:Rect,func:WindowFunction,image:Texture):Rect3 staticfunctionWindow(id:int,clientRect:Rect,func:WindowFunction,title:GUIContent
,style:GUIStyle): Rect第46頁3.1GUI圖形用戶界面系統(tǒng)
3.1.14Window控件
第47頁3.1.14Window控件1 usingUnityEngine;2 usingSystem.Collections;3 publicclassDemo:MonoBehaviour{4 privateintwindowID=0; //窗口ID,每一個窗口都要有唯一的ID5 privateintwindowID2=1;6 privateRectwindowRect=newRect(Screen.width/25,7 Screen.height/9.5f,200,150); //窗口在屏幕上的位置以及大小8 privateRectwindowRect2=newRect(Screen.width/4.5f,Screen.height/9.5f,200,150);3.1GUI圖形用戶界面系統(tǒng)
第48頁3.1.14Window控件9 voidOnGUI(){10 windowRect=GUI.Window(windowID,windowRect,11 createWindow,"創(chuàng)建Window控件");//通過第一種靜態(tài)方法創(chuàng)建一個窗口12 windowRect2=GUI.Window(windowID2,windowRect2,createWindow2,“第二個Window控件");13 }14 voidcreateWindow(intID){ //該方法需要有一個形參15 GUI.Button(newRect(50,50,100,80),"按鈕一");//創(chuàng)建Button控件16 }17 voidcreateWindow2(intID){18 GUI.Button(newRect(50,50,100,80),"按鈕二");3.1GUI圖形用戶界面系統(tǒng)
第49頁3.1GUI圖形用戶界面系統(tǒng)
3.1.15skin皮膚皮膚的使用是對Unity中GUI圖形用戶界面系統(tǒng)整體風格的修改。點擊創(chuàng)建好的皮膚文件,在Inspector面板處會顯示出其可以影響到的所有控件如圖3-36所示,展開任何一個控件菜單會顯示其可以修改的內(nèi)容,如圖3-37所列第50頁3.1GUI圖形用戶界面系統(tǒng)
3.1.15skin皮膚
第51頁3.1.15skin皮膚效果3.1GUI圖形用戶界面系統(tǒng)
第52頁3.1.15skin皮膚3 publicclassDemo:MonoBehaviour{4 publicGUISkin[]skins; //皮膚樣式數(shù)組,用于儲存多種皮膚5 privateintskinIndex; //皮膚數(shù)組索引,通過索引來改變?yōu)橄鄳?yīng)的皮膚文件6 voidAwake(){ //重寫系統(tǒng)Awake函數(shù),當腳本加載時會被調(diào)用7 Debug.LogWarning("請在面板處添加三個皮膚文件"); //打印警告,該案例需要放置三個皮膚文件8 return;9 }3.1GUI圖形用戶界面系統(tǒng)
第53頁3.1.15skin皮膚10 voidOnGUI(){ //重寫OnGUI函數(shù),該函數(shù)用于對圖形控件的繪制11 GUI.skin=skins[skinIndex]; //根據(jù)索引為GUI設(shè)置不同的皮膚文件12 if(GUI.Button(newRect(Screen.width/3,13 Screen.height/9,300,100),"第一種樣式")){//對Button進行定位、命名14 skinIndex=0; //當點擊此Button時會將皮膚樣式更換為第一個皮膚文件15 }16 if(GUI.Button(newRect(Screen.width/3,Screen.height/2.5f,300,100),"第二種樣式")){17 skinIndex=1; //當點擊此Button時會將皮膚樣式更換為第二個皮膚文件18 }19 if(GUI.Button(newRect(Screen.width/3,Screen.height/1.5f,300,100),"第三種樣式")){20 skinIndex=2; //當點擊此Button時會將皮膚樣式更換為第三個皮膚文件3.1GUI圖形用戶界面系統(tǒng)
第54頁3.1GUI圖形用戶界面系統(tǒng)
3.1.16GUI圖形用戶界面的變量GUI系統(tǒng)提供了很多圖形組件的變量,通過這些變量,可以對創(chuàng)建的GUI控件進行設(shè)置。BeginGroup控件用于開始一個組,但必須配套EndGroup來結(jié)束一個組。GUI系統(tǒng)提供的圖形組件變量功能豐富,例如設(shè)置文字顏色、組件背景、是否啟動相關(guān)圖形組件等等,通過不同變量間的組合可以創(chuàng)建出精美的游戲界面。第55頁3.1GUI圖形用戶界面系統(tǒng)
3.1.16GUI圖形用戶界面的變量
第56頁3.1.16GUI圖形用戶界面的變量4 publicGUIContentguiContent; //聲明兩個GUIContent變量5 publicGUIContentguiContent2;6 privateboolguiEnable; //設(shè)置控件啟用、禁用判斷標志位7 voidOnGUI(){ //重寫系統(tǒng)OnGUI函數(shù)用于控件繪制8 GUI.color=Color.green;//color變量用于更改其下所有控件的文字、背景顏色9 GUI.BeginGroup(newRect(Screen.width/25,10 Screen.height/9.5f,300,200));//創(chuàng)建一個開始組控件,將其他控件都放入其中11 GUI.Box(newRect(0,0,300,200),"300*200像素大小的區(qū)域");//放入Box控件12 if(GUI.Button(newRect(50,50,200,50),guiContent)){ //創(chuàng)建Button控件,更改標志位13 guiEnable=!guiEnable; //每點擊一次將標志位置反14 }3.1GUI圖形用戶界面系統(tǒng)
第57頁3.1.16GUI圖形用戶界面的變量15 GUI.enabled=guiEnable; //設(shè)置enabled變量16GUI.color=Color.yellow;//color變量用于更改其下所有控件的文字、背景顏色17 if(!guiEnable){ //通過判斷按鈕的狀態(tài)來動態(tài)改變tooltip變量內(nèi)容18 guiContent2.tooltip="當前按鈕已禁用";19 }else{20 guiContent2.tooltip="當前按鈕已啟用";21 }22 GUI.Button(newRect(50,120,200,50),23 guiContent2);//創(chuàng)建一個Button控件,它將受到enbaled和color變量的影響24 GUI.enabled=true; //將enabled置為true,其下控件將不會被禁用25 GUI.Label(newRect(80,180,200,40),GUI.tooltip);26 GUI.EndGroup(); //結(jié)束組控件,與開始組配合使用3.1GUI圖形用戶界面系統(tǒng)
第58頁3.2.1UGUI控件的創(chuàng)建及案例1.UGUI控件的創(chuàng)建以及重要組件介紹若想創(chuàng)建一個Button控件按步驟在Unity開發(fā)環(huán)境中點擊菜單GameObject→UI→Button
(1)在EventSystem游戲?qū)ο笊蠏燧d了一系列組件用于控制各類事件。(2)在UGUI另一個重要組成部分Canvas(畫布)下的每一個控件都會包含一個RectTransform組件。(3)在Canvas控件下的Canvas組件中還可以設(shè)置UI的渲染模式,Unity一共支持三種渲染模式,分別有ScreenSpace-Overlay、ScreenSpace-Camera、WorldSpace。3.2UGUI圖形用戶界面系統(tǒng)
第59頁2.案例效果3.2UGUI圖形用戶界面系統(tǒng)
第60頁3.開發(fā)流程(1)打開Unity集成開發(fā)環(huán)境,利用快捷鍵Ctrl+N新建一場景,按下Ctrl+S快捷鍵保存場景,命名為“Cengcixianshi”。在Assets目錄下新建一文件夾重命名為Texture,將開發(fā)過程中需要用到的圖片資源放進該文件夾,本案例中只用到了三張圖片,導入即可。(2)利用創(chuàng)建Button的步驟創(chuàng)建兩個RawImage(有關(guān)RawImage的知識我們將在后面介紹)游戲?qū)ο蠛鸵粋€Button,將兩個RawImage重命名為RIA和RIB,保證RIA在RIB前面,布局如圖3-52所示。將Canvas游戲?qū)ο蟮匿秩灸J叫薷臑閃orldSpace,將攝像機的位置調(diào)整到適當位置。3.2UGUI圖形用戶界面系統(tǒng)
第61頁3.開發(fā)流程(3)改變兩個RawImage的位置,將其調(diào)置Canvas(等于攝像機)中間。選中RIA游戲?qū)ο髮蕚浜玫膱D片拖置RawImage的Texture右側(cè)欄中,并且點擊Color選項將該圖片的透明圖調(diào)為一半。重復該步驟為RIB拖上紋理圖(不修改透明度)。調(diào)整這兩個RawImage的大小和位置。(4)在Button游戲?qū)ο蟮淖訉ο骉ext的文本框中輸入Button賦于RIB之上,RIB賦于RIA之上。靜止的正方體遮擋住整個Canvas(畫布),調(diào)整Text字體的大小以及該Button的位置和大小,如圖3-53所示。并且分別在RIA后面以及RIB前面創(chuàng)建兩個正方體。(5)將兩個正方體分別重命名為leftcube和rightcube,調(diào)整兩個正方體的位置和角度。并且將準備好的圖片拖置Scene中的游戲?qū)ο笊蠟槠涮砑蛹y理圖,會發(fā)現(xiàn)Canvas和正方體相互遮擋。點擊運行按鈕運行游戲。3.2UGUI圖形用戶界面系統(tǒng)
第62頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.2Panel控件和Text控件Panel控件是UGUI中最基本的控件,可以作為整個界面的背景。而Text控件是可以進行文本信息顯示的控件
參數(shù)名含義參數(shù)名含義RichText是否為多格式文本Alignment對齊方式Material字體材質(zhì)VerticalOverflow豎直溢出方式BestFit最佳匹配方式(字體大小會根據(jù)內(nèi)容多少和Text控件大小自動更改)HorizontalOverflow水平溢出方式(文本超出Text控件長度時的顯示方式)第63頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.2Panel控件和Text控件第64頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.2Panel控件和Text控件(1)打開Unity集成開發(fā)環(huán)境,在Project面板右擊→Create→Folder,新建一個文件夾,重命名為Font,將下載好的FZSTK.TTF字體導入進Font文件夾。重復該步驟,重命名為Texture。(2)點擊GameObject→UI→Panel,創(chuàng)建一個Panel控件。選中導入的圖片,在其屬性面板中將將TextureType修改為Sprite(2DandUI),點擊Apply按鈕。將修改后的Sprite拖拽到Panel中Image組件下的SourceImage一欄中。并在Color中將其透明度修改為原來的一半。(3)點擊GameObject→UI→Text,創(chuàng)建兩個Text控件,并將其中一個重命名為TextTwo。在Text游戲?qū)ο蟮腡ext組件下的Text文本輸入框中輸入“我是系統(tǒng)自帶的字體”內(nèi)容,并在Color中將顏色改為紅色,字體則選擇默認的字體即可。(4)選擇TextTwo游戲?qū)ο?,點擊Font參數(shù)右側(cè)的設(shè)置按鈕,在彈出的窗口中選擇我們所需要的字體,在這里選擇我們剛剛導入的字體。
第65頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.3Button控件該控件的亮點是有多種過渡模式
ColorTint模式——當使用該模式時,可以分別通過Color屬性對按鈕的四個狀態(tài)進行設(shè)置,按鈕在對應(yīng)的狀態(tài)下時按鈕的顏色就會變成設(shè)置的顏色,與正常狀態(tài)產(chǎn)生區(qū)別。這是一般按鈕最常用的過渡模式。SpriteSwap模式——這種模式類似于ColorTint模式,只不過切換的不是顏色而是圖片精靈Sprite,分別有三種狀態(tài)可以對應(yīng)不同的圖片精靈。需要注意的是,每種狀態(tài)所對應(yīng)的必然是Sprite。(這句沒理解)圖片的修改方法已在前面介紹過了這里不再重復。Animation模式——這個過渡模式是UGUI的特色,該功能可以使UGUI界面系統(tǒng)和Unity中的動畫系統(tǒng)進行完美的結(jié)合,使用動畫狀態(tài)機可以對按鈕的位置、大小、旋轉(zhuǎn)、圖片等大量參數(shù)進行設(shè)置。Animation動畫的制作不屬于本章內(nèi)容,第66頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.3Button控件第67頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.3Button控件publicclassButtonMethod:MonoBehaviour{4 publicGameObjectobj; //聲明Text游戲?qū)ο? privateintcounter=1; //聲明計數(shù)器變量6 voidUpdate(){7 if(counter%2==0){ //當計數(shù)器值可以整除2時8 obj.SetActive(true); //Text游戲?qū)ο蟮腶ctive置為true9 }else{10 obj.SetActive(false); //否則Text游戲?qū)ο蟮腶ctive置為false11 }}12 publicvoidOnClick(){ /聲明OnClick方法13 counter++; //計數(shù)器自加第68頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.4Image控件和RawImage控件Image控件是非交互式的圖片精靈Sprite控件,是常用的UGUI控件之一,它可以用來裝飾界面、圖標等。Image只能用來顯示圖片Sprite。RawImage控件是用來顯示非交互式的圖像,它不像Image只能顯示圖片的Sprite,它可以顯示任何形式的紋理圖,包括腳本中利用WWW類從某個URL下載下來的圖像或者紋理,還可以呈現(xiàn)出場景中某個攝像機的渲染圖即在UI界面呈現(xiàn)出攝像機所拍攝的畫面。第69頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.4Image控件和RawImage控件第70頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.4Image控件和RawImage控件(1)首先在Assets目錄下創(chuàng)建一個名為Texture的文件夾,將我們所需要的圖片資源導入該文件夾。在Project右擊→Create→RenderTexture,創(chuàng)建一個渲染圖片,重命名為Rendertexture。點擊GameObject→Camera,創(chuàng)建一個攝像機。(2)將RenderTexture渲染圖片拖拽到我們剛創(chuàng)建的攝像機中的TargetTexture中,如圖3-65所示。然后點擊GameObject→UI→Panel,將準備好的圖片拖追到Panel的Image組件中的SourceImage中,如圖3-66所示。創(chuàng)建一個背景,并通過Color參數(shù)將透明度調(diào)為原來的一半。
(3)點擊GameObject→3DObject→Cube,調(diào)整該正方體的大小和位置,使其正好位于Camera(我們剛剛創(chuàng)建的攝像機)將準備好的圖片拖拽到這個立方體上為其賦上紋理圖。再為Canvas創(chuàng)建一個RawImage,將RenderTexture拖拽到RawImage組件下Texture中,點擊運行按鈕運行游戲。第71頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.5Toggle控件在游戲的UI界面中我們會見到各種各樣的開關(guān),UGUI中的Toggle控件就實現(xiàn)了開關(guān)功能參數(shù)名含義參數(shù)名含義Interactable是否啟用該控件Transition過渡模式Navigation導航,確認控件的順序Visualize使導航順序在Scene窗口中可視化IsOn開關(guān)的狀態(tài)(“開”或“關(guān)”)ToggleTransition開關(guān)的消隱模式,有none和Fade(褪色消隱)兩種模式GraphicChackmark子對象的引用Group成組(將一組開關(guān)變成多選一開關(guān))第72頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.5Toggle控件第73頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.5Toggle控件(1)打開Unity集成開發(fā)環(huán)境,在Project面板右擊→Create→Folder創(chuàng)建文件夾,重命名為Texture,將我們準備好的紋理圖片資源導入該文件夾。點擊GameObject→UI→Panel,并將導入的Sprite圖片拖到SourceImage中,創(chuàng)建一個UI背景。(2)按照GameObject→UI→Toggle的步驟創(chuàng)建三個Toggle,調(diào)整好它們?nèi)齻€的位置和大小,并將它們的IsOn統(tǒng)一置為false,選中Canvas(畫布),利用快捷鍵Ctrl+Shift+N創(chuàng)建一個空游戲?qū)ο?,并將三個Toggle控件拖入該GameObject變成其子對象。(3)將父子關(guān)系調(diào)整完成后,選中GameObject游戲?qū)ο螅c擊Component→UI→ToggleGroup為該游戲?qū)ο筇砑覶oggleGroup組件。最后一步,將GameObject游戲?qū)ο蠓謩e拖拽到三個Toggle的Group參數(shù)右側(cè)欄中。第74頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.6Slider控件和Scrollbar控件每個界面都會存在一些控制部件,比如最常見的聲音的音量調(diào)整、圖像的清晰度等等,這些都需要Slider控件來控制在Slider控件的參數(shù)列表中有一個需要的注意的參數(shù)就是WholeNumber,該參數(shù)代表滑塊的值是否只能是整數(shù)。Slider控件也可以像Button控件一樣可以掛載腳本用來響應(yīng)事件監(jiān)聽,首先寫一個腳本,OnValuechanged方法里是對事件的處理,將腳本掛載到Canvas對象上。Scrollbar控件和Slider控件在結(jié)構(gòu)和功能上是比較相似的第75頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.6Slider控件和Scrollbar控件第76頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.6Slider控件和Scrollbar控件(1)點擊GameObject→UI→Slider,在游戲組成對象列表中會出現(xiàn)Slider控件。修改Slider控件中Background、Fill、Handle游戲?qū)ο蟮念伾?,以方便與區(qū)分。利用同樣的步驟創(chuàng)建Text控件,將Text文本輸入框中的內(nèi)容清空。調(diào)整Slider和Text控件的大小和位置。(2)在Project面板創(chuàng)建名為C#的文件夾,并且在該文件夾中創(chuàng)建名為SliderMethod的C#腳本。雙擊該腳本進入編輯器編輯腳本。該腳本是對Slider的當前值發(fā)生變化時事件的監(jiān)聽。(3)將編寫好的腳本掛載到Canvas游戲?qū)ο笊?,然后把Slider控件和Text控件分別拖拽到腳本中對應(yīng)的變量中,第77頁3.2UGUI圖形用戶界面系統(tǒng)
3.2.6Slider控件和Scrollbar控件1 usingUnityEngine;2 usingSystem.Collections;3 usingUnityEngine.UI;4 publicclassSliderMethod:MonoBehaviour{5 publicSlidersd;//聲明一個代表Scene中游戲?qū)ο蟮腟lider變量6 publicTexttext;//聲明一個代表Scene中游戲?qū)ο蟮腟lider變量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三方店鋪買賣合同范本
- 中藥材購銷經(jīng)典合同范本
- 三方土地租賃合同格式范文
- 三人共同投資合作合同
- OEM代工合同樣本
- 個人債務(wù)轉(zhuǎn)讓合同范本
- 個人汽車抵押貸款合同范本
- 個人二手船舶交易合同協(xié)議書
- 中外貿(mào)易采購合同(DDP條款)
- 上海居民房屋租賃合同樣本
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院2025年工作計劃
- 2024年山東省泰安市初中學業(yè)水平生物試題含答案
- 住建局條文解讀新規(guī)JGJT46-2024《施工現(xiàn)場臨時用電安全技術(shù)標準》
- 物流公司軟件售后服務(wù)流程方案
- 機械工程類基礎(chǔ)知識單選題100道及答案解析
- 關(guān)于水滸傳的題目單選題100道及答案解析
- 冠心病課件完整版本
- 2024年衛(wèi)生資格(中初級)-中醫(yī)外科學主治醫(yī)師考試近5年真題集錦(頻考類試題)帶答案
- 中國大百科全書(第二版全32冊)08
- 霍尼韋爾Honeywell溫控器UDC2500中文手冊
- AQ/T 2059-2016 磷石膏庫安全技術(shù)規(guī)程(正式版)
評論
0/150
提交評論