/// <summary> /// 刷新右键MapPreview的界面 /// </summary> private void RefreshAreaPreviewUI(List <GUIContent> contentList, AreaPreview areaPreview) { if (areaPreview == null) { return; } Vector2 mousePosition = Event.current.mousePosition; GameObject userData = Selection.activeGameObject; int selected = -1; EditorUtility.DisplayCustomMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), contentList.ToArray(), selected, delegate(object data, string[] opt, int select) { switch (select) { case 0: //生成所有Unit areaPreview.InstantiateAllUnit = true; break; case 1: //删除所有Unit areaPreview.DestroyAllUnit = true; break; } }, userData); Event.current.Use(); }
private void DoInstantiateAllArea() { if (m_AreaPreviews != null) { DoDestroyAllArea(); } m_AreaPreviews = new AreaPreview[MapInfo.AreaInfos.Length]; for (int iArea = 0; iArea < MapInfo.AreaInfos.Length; iArea++) { AreaInfo iterAreaInfo = MapInfo.AreaInfos[iArea]; GameObject iterArea = new GameObject(); AreaPreview iterAreaPreview = iterArea.AddComponent <AreaPreview>(); m_AreaPreviews[iArea] = iterAreaPreview; iterAreaPreview.Initialie(this, iterAreaInfo); } }
/// <summary> /// 右键响应 /// </summary> /// <param name="instanceID"></param> /// <param name="selectionRect"></param> private 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 selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject; if (selectedGameObject) { AreaPreview areaPreview = selectedGameObject.GetComponent <AreaPreview>(); if (areaPreview != null) { List <GUIContent> contentList = new List <GUIContent>(); contentList.Add(new GUIContent("生成所有Unit")); contentList.Add(new GUIContent("删除所有Unit")); RefreshAreaPreviewUI(contentList, areaPreview); } } } }