Beispiel #1
0
        public static void CreateForm(MenuCommand menuCommand)
        {
            GameObject go = DefaultControls.CreateForm(GetStandardResources());

            PlaceUIElementRoot(go, menuCommand);

            RectTransform rect = go.GetComponent <RectTransform>();

            rect.anchoredPosition = Vector2.zero;
            rect.sizeDelta        = Vector2.zero;
        }
Beispiel #2
0
        private static void PlaceUIElementRoot(GameObject element, MenuCommand menuCommand) //2017年12月20日14:14:02 周俊优化代码逻辑
        {
            GameObject canvas = null;
            GameObject parent = menuCommand.context as GameObject;

            if (parent == null || parent.GetComponentInParent <Canvas>() == null) //不存在焦点,并且上面不存在Canvas组件,创建并获取canvas
            {
                canvas = GetOrCreateCanvasGameObject();                           //create canvas
            }
            else //存在焦点,并且上面存在Canvas组件,获取canvas
            {
                canvas = parent.GetComponentInParent <Canvas>().gameObject; //get canvas
            }
            if (element.GetComponent <IMCForm>() != null)                   //创建的物体是IMCForm组件
            {
                element.transform.name = GameObjectUtility.GetUniqueNameForSibling(canvas.transform, element.name);
                GameObjectUtility.SetParentAndAlign(element.gameObject, canvas.gameObject);
            }
            else//创建的物体不是IMCForm组件
            {
                if (parent != null && parent.GetComponent <Canvas>() == null)//存在焦点并且焦点不在Canvas
                {
                    GameObjectUtility.SetParentAndAlign(element, parent);
                }
                else//不存在焦点
                {
                    GameObject go = DefaultControls.CreateForm(GetStandardResources());
                    PlaceUIElementRoot(go, menuCommand);
                    RectTransform rect = go.GetComponent <RectTransform>();
                    rect.anchoredPosition = Vector2.zero;
                    rect.sizeDelta        = Vector2.zero;
                    GameObjectUtility.SetParentAndAlign(element, go);
                }
            }
            Undo.RegisterCreatedObjectUndo(element, "Create " + element.name);
            if (parent != menuCommand.context) // not a context click, so center in sceneview
            {
                SetPositionVisibleinSceneView(parent.GetComponent <RectTransform>(), element.GetComponent <RectTransform>());
            }
            element.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;
            Selection.activeGameObject = element;
        }