unity3d创建window

unity3d创建windwo的方法如下:

GUILayout.Window (1, new Rect (50, 50, 200, 100), Func1, "窗口1");

第一个参数是新创建的窗口的编号,可以自定义,这里定义为了1;

第二个参数是窗口的GUI坐标位置,其中50,50表示左上角的坐标,200,100表示右下角的坐标,两点确定一个矩形;

第三个参数是创建该窗口后调用的方法,会自动将第一个参数传入该函数;

第四个参数是该窗口的名字。

其中func1函数如下:

void Func1(int id){
    if (id == 1) {
        //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 (50, 50, 200, 100);//窗口1的默认位置
}

void OnGUI(){
        //思路是:当点击按钮show时,isShow为真,在第二个判断条件中显示窗口
        //其中,窗口位置也是一个变量,这样才可以避免每一帧擦除时重新绘制为变化后的位置
    if (GUILayout.Button ("Show")) {
        isShow = true;
    }
    if (isShow) {
        windowPos = GUILayout.Window (1, windowPos, Func1, "窗口1");
    }
}

void Func1(int id){
    if (id == 1) {
    //id与绘制窗口时的编号是一致的,用于区分是哪一个窗口调用
        if (GUILayout.Button ("这是一个按钮")) {
            isShow = false;
        }
        GUI.DragWindow ();//该函数放在最后,即可实现窗口的拖拽效果
    }
}    

 

posted on 2017-06-06 20:12  chenyangsocool  阅读(253)  评论(0编辑  收藏  举报