diff options
Diffstat (limited to 'Assets/UI_Extension/Editor/MenuOptions.cs')
-rw-r--r-- | Assets/UI_Extension/Editor/MenuOptions.cs | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/Assets/UI_Extension/Editor/MenuOptions.cs b/Assets/UI_Extension/Editor/MenuOptions.cs new file mode 100644 index 0000000..2eef47e --- /dev/null +++ b/Assets/UI_Extension/Editor/MenuOptions.cs @@ -0,0 +1,123 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace UIExt +{ + static internal class MenuOptions + {
+
+ [MenuItem("GameObject/UI Extensions/GridLayoutGroupExt", false,2000)] + static public void AddGridLayoutGroupExt(MenuCommand menuCommand) + {
+ Debug.Log("AddGridLayoutGroupExt"); + } +
+ //[MenuItem("GameObject/UI/Button", false, 2030)] + //static public void AddButton(MenuCommand menuCommand) + //{ + // //GameObject go = DefaultControls.CreateButton(GetStandardResources()); + // //PlaceUIElementRoot(go, menuCommand); + //}
+
+ //private static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand) + //{ + // GameObject parent = menuCommand.context as GameObject; + // if (parent == null || parent.GetComponentInParent<Canvas>() == null) + // { + // parent = GetOrCreateCanvasGameObject(); + // } + + // string uniqueName = GameObjectUtility.GetUniqueNameForSibling(parent.transform, element.name); + // element.name = uniqueName; + // Undo.RegisterCreatedObjectUndo(element, "Create " + element.name); + // Undo.SetTransformParent(element.transform, parent.transform, "Parent " + element.name); + // GameObjectUtility.SetParentAndAlign(element, parent); + // if (parent != menuCommand.context) // not a context click, so center in sceneview + // SetPositionVisibleinSceneView(parent.GetComponent<RectTransform>(), element.GetComponent<RectTransform>()); + + // Selection.activeGameObject = element; + //}
+
+ //private static void SetPositionVisibleinSceneView(RectTransform canvasRTransform, RectTransform itemTransform) + //{ + // // Find the best scene view + // SceneView sceneView = SceneView.lastActiveSceneView; + // if (sceneView == null && SceneView.sceneViews.Count > 0) + // sceneView = SceneView.sceneViews[0] as SceneView; + + // // Couldn't find a SceneView. Don't set position. + // if (sceneView == null || sceneView.camera == null) + // return; + + // // Create world space Plane from canvas position. + // Vector2 localPlanePosition; + // Camera camera = sceneView.camera; + // Vector3 position = Vector3.zero; + // if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRTransform, new Vector2(camera.pixelWidth / 2, camera.pixelHeight / 2), camera, out localPlanePosition)) + // { + // // Adjust for canvas pivot + // localPlanePosition.x = localPlanePosition.x + canvasRTransform.sizeDelta.x * canvasRTransform.pivot.x; + // localPlanePosition.y = localPlanePosition.y + canvasRTransform.sizeDelta.y * canvasRTransform.pivot.y; + + // localPlanePosition.x = Mathf.Clamp(localPlanePosition.x, 0, canvasRTransform.sizeDelta.x); + // localPlanePosition.y = Mathf.Clamp(localPlanePosition.y, 0, canvasRTransform.sizeDelta.y); + + // // Adjust for anchoring + // position.x = localPlanePosition.x - canvasRTransform.sizeDelta.x * itemTransform.anchorMin.x; + // position.y = localPlanePosition.y - canvasRTransform.sizeDelta.y * itemTransform.anchorMin.y; + + // Vector3 minLocalPosition; + // minLocalPosition.x = canvasRTransform.sizeDelta.x * (0 - canvasRTransform.pivot.x) + itemTransform.sizeDelta.x * itemTransform.pivot.x; + // minLocalPosition.y = canvasRTransform.sizeDelta.y * (0 - canvasRTransform.pivot.y) + itemTransform.sizeDelta.y * itemTransform.pivot.y; + + // Vector3 maxLocalPosition; + // maxLocalPosition.x = canvasRTransform.sizeDelta.x * (1 - canvasRTransform.pivot.x) - itemTransform.sizeDelta.x * itemTransform.pivot.x; + // maxLocalPosition.y = canvasRTransform.sizeDelta.y * (1 - canvasRTransform.pivot.y) - itemTransform.sizeDelta.y * itemTransform.pivot.y; + + // position.x = Mathf.Clamp(position.x, minLocalPosition.x, maxLocalPosition.x); + // position.y = Mathf.Clamp(position.y, minLocalPosition.y, maxLocalPosition.y); + // } + + // itemTransform.anchoredPosition = position; + // itemTransform.localRotation = Quaternion.identity; + // itemTransform.localScale = Vector3.one; + //} +
+ //// Helper function that returns a Canvas GameObject; preferably a parent of the selection, or other existing Canvas.
+ //static public GameObject GetOrCreateCanvasGameObject() + //{ + // GameObject selectedGo = Selection.activeGameObject; + + // // Try to find a gameobject that is the selected GO or one if its parents. + // Canvas canvas = (selectedGo != null) ? selectedGo.GetComponentInParent<Canvas>() : null; + // if (canvas != null && canvas.gameObject.activeInHierarchy) + // return canvas.gameObject; + + // // No canvas in selection or its parents? Then use just any canvas.. + // canvas = Object.FindObjectOfType(typeof(Canvas)) as Canvas; + // if (canvas != null && canvas.gameObject.activeInHierarchy) + // return canvas.gameObject; + + // // No canvas in the scene at all? Then create a new one. + // return MenuOptions.CreateNewUI(); + //}
+ //static public GameObject CreateNewUI() + //{ + // // Root for the UI + // var root = new GameObject("Canvas"); + // root.layer = LayerMask.NameToLayer(kUILayerName); + // Canvas canvas = root.AddComponent<Canvas>(); + // canvas.renderMode = RenderMode.ScreenSpaceOverlay; + // root.AddComponent<CanvasScaler>(); + // root.AddComponent<GraphicRaycaster>(); + // Undo.RegisterCreatedObjectUndo(root, "Create " + root.name); + + // // if there is no event system add one... + // CreateEventSystem(false); + // return root; + //}
+ }
+
+}
\ No newline at end of file |