1、GuiText如何换行?
加入\n就可以自动换行。
2、如何在屏幕上建立一个按钮?
void OnGUI()
{
if(GUI.Button(new Rect(230,200,100,30),"this is good"))
{
Debug.Log("begin game");
}
}
这里一定要用new,四个参数不是四个点的位置,而是前两个是开始点,后两个分别是宽和高。
3、Button与repeatButton有何区别?
button里的语句只执行一次,而repeatbutton中的语句将在鼠标按下期间一直执行。
4、如何建立一行多个按钮?
void OnGUI()
{
if(GUI.Button(new Rect(230,200,100,30),"this is good"))
{
string[] arr = { "aaa", "bb", "cc","dd","ee"};
GUI.Toolbar(new Rect(50,50,300,30),1,arr); }
}
会在50,50的位置开始,建立一行300宽,30高的5个按钮,1代表默认选中的是第2个按钮(从0开始),如果要获取当前按下了哪一个按钮,可以将1改成一个int型变量,这时通过获取该变量的值就可以得到当前按下的是第几个按钮了。
5、如何建立一个grid按钮阵列?
string[] arr = { "aaa", "bb", "cc","dd","ee"};
GUI.SelectionGrid(new Rect(50,120,300,30),1,arr,3);
会自动建立出3行共5个按钮。
6、当建立一个textfiled、Toggle、HorizontalSlider等交互控件时,控件可以正常显示,但无法实现交互?
因为定义了装控件值的变量时,在onGUI函数中对其定义了值,这时候将导致这个值不断刷新而无法实现交互,所以,如果当给这个变量以初始值的时候,应该将其放在star函数里。
7、如何定义上面那3个控件?
public string st1;
public bool b1;
float select_value;
在start()中:
st1="";
b1=false;
select_value=3.0f;
在ongui()中
st1=GUI.TextField(new Rect(10,20,100,20),st1);
b1=GUI.Toggle(new Rect(10,50,100,20),b1,"checked");
select_value=GUI.HorizontalSlider(new Rect(10,80,100,20),select_value,2,8);
8、如何用scrollview和groupview来组织控件群?
在所有控件语句的前面加上如:
vv1=GUI.BeginScrollView(new Rect(0,0,200,200),vv1,new Rect(0,0,480,300),true,true);
在所有控件语句后加上如:
GUI.EndScrollView();
就可以了,需要注意的是vv1是一个事先定义好的Vector2变量。
其他的也很简单:
GUI.BeginGroup(new Rect(5,5,200,200),"first group");
....
GUI.EndGroup();
GUI.Windows
9、如何建立一个winow?
同前面几个群组控件不同,window在onGUI中定义之后,必须自己写函数,然后在该函数中写入其他控件。
GUI.Window(1,new Rect(30,30,100,100),create_window1,"goodwindow");
这就是要建立一个ID为1的,建窗函数名为create_window1的,title为goodwindow的语句放在onGUI中,另外要写一个函数:
void create_window1(int windowsID)
{
}
这个函数中可以写你自己需要的控件。
10、GUIstyle是怎么回事?
你可以先定义一个public GUIStyle gs1;
然后在onGui中的创建控件函数中,一般都有一个最后的参数用来指定gs1;
gs1可以在onstart中定义,也可以直接在变量中修改颜色什么的。
11、GUISkin是怎么回事?
你可以先定义一个GUISkin,这时会在脚本出现公共变量sk1.
public GUISkin sk1;
然后你可以在任何资源目录中建立一个新的GUISkin,并修改它的颜色什么的,然后将建立好的GUISkin资源拖动给sk1变量就可以了。