L03.菜单栏开发

1.点击顶部菜单栏执行方法

1
2
3
4
5
6
7
8
9
10
11
//顶部菜单类
public class Menu
{
//在顶部显示"工具"菜单,下方有"导出AB资源包",点击执行函数
[MenuItem("工具/导出AB资源包")]
static void BuildAB()
{
//Debug.Log("导出AB资源包");
Debug.Log(Application.persistentDataPath);
}
}

2.点击顶部菜单栏创建窗口

1.绘制窗口

1
2
3
4
5
6
7
8
9
10
public class PopWindow : EditorWindow
{
[MenuItem("工具/创建窗口")]
static void OpenWindow()
{
PopWindow window = GetWindow<PopWindow>(false, "弹窗标题", true);
window.minSize = new Vector2(40, 30);
window.minSize = new Vector2(80, 60);
}
}

2.生命周期

  1. 开窗口调用OnEnable
  2. 关窗口调用OnDisable
  3. 有变化就调用Update
  4. 按钮OnGUI
  5. 场景结构发生变化,执行回调函数OnHierarchyChange
  6. 项目结构发生变化,执行回调函数OnProjectChange
  7. 选中物体发生变化,执行回调函数OnSelectionChange
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
//开窗口调用
private void OnEnable()
{
Debug.Log("enable");
}

//关窗口调用
private void OnDisable()
{
Debug.Log("disable");
}

//窗口开启就调用
private void Update()
{
Debug.Log("update");
}

//按钮
private void OnGUI()
{
if (GUILayout.Button("测试点击"))
{
Debug.Log("测试点击");
}
}

//场景结构发生变化,执行回调函数
private void OnHierarchyChange()
{
Debug.Log("hierarchy");
}

//项目结构发生变化,执行回调函数
private void OnProjectChange()
{
Debug.Log("project");
}

//选中物体发生变化,执行回调函数
private void OnSelectionChange()
{
//获取当前选中的物体的名称
Debug.Log(Selection.activeGameObject.name);
}