unity3d创建windwo的方法如下:
GUILayout.Window (, new Rect (50, 50, 200, 100), Func1, "窗口1");
第一个参数是新创建的窗口的编号,可以自定义,这里定义为了1;
第二个参数是窗口的GUI坐标位置,其中50,50表示左上角的坐标,200,100表示右下角的坐标,两点确定一个矩形;
第三个参数是创建该窗口后调用的方法,会自动将第一个参数传入该函数;
第四个参数是该窗口的名字。
其中func1函数如下:
void Func1(int id){
if (id == ) {
//id与绘制窗口时的编号是一致的,用于区分是哪一个窗口调用
GUILayout.Button ("这是一个按钮");
}
}
这时候的界面如图1所示:
图1
下面修改一下需求:
运行程序后,首先界面上有一个按钮show,点击该按钮后显示上图1所示,再点击图1中的按钮后窗口1隐藏。且窗口一能够实现拖动效果。
具体代码如下:
private bool isShow;//显示是否为真
private Rect windowPos;//窗口坐标 // Use this for initialization
void Start () {
isShow = false;//初始值为false,即窗口1不显示
windowPos = new Rect (, , , );//窗口1的默认位置
} void OnGUI(){
//思路是:当点击按钮show时,isShow为真,在第二个判断条件中显示窗口
//其中,窗口位置也是一个变量,这样才可以避免每一帧擦除时重新绘制为变化后的位置
if (GUILayout.Button ("Show")) {
isShow = true;
}
if (isShow) {
windowPos = GUILayout.Window (, windowPos, Func1, "窗口1");
}
} void Func1(int id){
if (id == ) {
//id与绘制窗口时的编号是一致的,用于区分是哪一个窗口调用
if (GUILayout.Button ("这是一个按钮")) {
isShow = false;
}
GUI.DragWindow ();//该函数放在最后,即可实现窗口的拖拽效果
}
}