1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| using UnityEngine;
public class GUIStudy8 : MonoBehaviour {
private Rect dragWindowPos = new Rect(400, 200, 200, 150); void OnGUI() { // 第一个参数 id 是窗口的唯一ID 不要和别的窗口重复 // id有一个重要的作用,除了区分不同窗口,还可以在一个函数中去处理多个窗口的逻辑 // 委托函数 绘制窗口用的函数 传入即可 GUI.Window(1, new Rect(100, 100, 200, 150), DrawWindow, "TestWindow"); GUI.Window(2, new Rect(100, 300, 200, 150), DrawWindow, "TestWindow2");
// 可以让其他控件不再有用 // 可以理解为 该窗口在最上层 其他按钮都点击不到了 // 只能点击该窗口上的控件
// GUI.ModalWindow(3, new Rect(300, 100, 200, 150), DrawWindow, "模态窗口");
dragWindowPos = GUI.Window(4, dragWindowPos, DrawWindow, "拖动窗口");
}
private void DrawWindow(int id) { switch (id) { case 1: GUI.Button(new Rect(10, 30, 30, 20), "1"); break; case 2: GUI.Button(new Rect(10, 30, 30, 20), "2"); break; case 3: GUI.Button(new Rect(10, 30, 30, 20), "3"); break; case 4: GUI.Button(new Rect(10, 30, 30, 20), "4"); // 该API 写在窗口函数中调用 可以让窗口被拖动 // 传入Rect参数的重载 作用 // 是决定窗口中哪一部分位置 可以被拖动 超出窗口部分不算 // 默认不填 就是无参重载 默认窗口的所有位置都能被拖动 GUI.DragWindow(new Rect(0, 0, 1000, 20)); break; } }
void Start() { } }
|