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; }
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; }