Unity自定义菜单
自定义Unity顶层菜单,创建UI
using UnityEditor;
public class Map : EditorWindow
{
private int X;
private int Y;
[MenuItem("AStart/MapEdit")] //顶层菜单显示层级
//启动函数
static void run() =>EditorWindow.GetWindow<Map>();
//在这个系统函数里设置GUI,
public void OnGUI()
{
GUILayout.Label("地图X");
X = int.Parse(GUILayout.TextField(X.ToString()));
GUILayout.Label("地图Y");
Y = int.Parse(GUILayout.TextField(Y.ToString()));
}
//系统函数,更新UI页面
void OnSelectionChange()
{
this.Repaint();
}
}
扩展Inspector页面
扩展物体挂载的脚本,在Inspector页面的显示.
把下面的脚本挂载到一个物体上,随便一个脚本也行
public class Inspector : MonoBehaviour
{
public int id = 1001;
public bool bo = false;
public string name = "张三";
}
下面的脚本就是给上面的脚本做扩展
[CustomEditor(typeof(Inspector))]就是定义给哪个脚本做扩展
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Inspector))]
public class UIExport : Editor
{
private string path;
// 可能是场景的事件
public void OnSceneGUI()
{
if (Event.current.type == EventType.KeyDown)
{
if (Event.current.keyCode == KeyCode.LeftControl)
Event.current.Use();
else if (Event.current.keyCode == KeyCode.X)
Event.current.Use();
}
}
//编辑UI
public override void OnInspectorGUI()
{
//这个系统函数是为了显示原脚本
DrawDefaultInspector();
//标签
GUILayout.Label("设置配置文件的生成路径");
//输入框
path = GUILayout.TextField(path);
//按钮
if (GUILayout.Button("点击开始", GUILayout.Height(40)))
{
GetSceneView().Focus(); //转移键盘焦点
}
//设置背景颜色
GUI.backgroundColor = Color.yellow;
}
//获得当前场景焦点
public static SceneView GetSceneView()
{
SceneView view = SceneView.lastActiveSceneView;
if (view == null)
view = EditorWindow.GetWindow<SceneView>();
return view;
}
//关闭调用
void OnDisable(){}
}
记录一些以后能用到的