1、拓展菜单
拓展Hierarchy面板,Create按钮下的菜单项都在GameObject下,代码如下;
//Create按钮下的菜单项都在GameObject下
[MenuItem("GameObject/My Create/cube", false, 0)]
static void CreateCube()
{
GameObject.CreatePrimitive(PrimitiveType.Cube);
}
效果
2、拓展布局
[InitializeOnLoadMethod]
static void InitializeOnLoadMethod()
{
EditorApplication.hierarchyWindowItemOnGUI = delegate (int instanceID,
Rect selectionRect)
{
if (Selection.activeObject &&
instanceID == Selection.activeObject.GetInstanceID())
{
float width = 50f;
float height = 20f;
selectionRect.x += (selectionRect.width - width);
selectionRect.width = width;
selectionRect.height = height;
if (GUI.Button(selectionRect, AssetDatabase.LoadAssetAtPath<Texture>("Assets/Unity.png")))
{
Debug.LogFormat("click:{0}", Selection.activeObject.name);
}
}
};
}
效果
3、重写菜单
[MenuItem("Window/Test/yangfufeng")]
static void Test()
{
}
[MenuItem("Window/Test/yaogaoshang")]
static void Teat1()
{
}
[MenuItem("Window/Test/Unity/money")]
static void Test2()
{
}
[InitializeOnLoadMethod]
static void StartInitializeOnLoadMethod()
{
EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;
}
static void OnHierarchyGUI(int instanceID,Rect selectionRect)
{
if(Event.current!=null&&selectionRect.Contains(Event.current.mousePosition)&&Event.current.button==1&&
Event.current.type<=EventType.MouseUp)
{
GameObject selectionGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if(selectionGameObject)
{
Vector2 mousePosition = Event.current.mousePosition;
EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Window/Test", null);
Event.current.Use();
}
}
}
效果:
重写创建image按钮
[MenuItem("GameObject/UI/Image")]
static void CreatImage()
{
if (Selection.activeTransform)
{
if (Selection.activeTransform.GetComponentInParent<Canvas>())
{
Image image = new GameObject("image").AddComponent<Image>();
image.raycastTarget = false;
image.transform.SetParent(Selection.activeTransform, false);
Selection.activeTransform = image.transform;
}
}
}