public CanvasScalerSerializable(CanvasScaler scaler) : base(scaler) { uiScaleMode = scaler.uiScaleMode; referenceResolution = scaler.referenceResolution; screenMatchMode = scaler.screenMatchMode; matchWidthOrHeight = scaler.matchWidthOrHeight; defaultSpriteDPI = scaler.defaultSpriteDPI; fallbackScreenDPI = scaler.fallbackScreenDPI; referencePixelsPerUnit = scaler.referencePixelsPerUnit; dynamicPixelsPerUnit = scaler.dynamicPixelsPerUnit; physicalUnit = scaler.physicalUnit; scaleFactor = scaler.scaleFactor; }
public CanvasScalerSpec( CanvasScaler.ScaleMode scaleMode = CanvasScaler.ScaleMode.ConstantPhysicalSize, Vector2?referenceResolution = null, CanvasScaler.ScreenMatchMode screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight, float matchWidthOrHeight = 0f, float referencePixelsPerUnit = 100f) { ScaleMode = scaleMode; ReferenceResolution = referenceResolution.GetValueOrDefault(new Vector2(x: 1920, y: 1080)); ScreenMatchMode = screenMatchMode; MatchWidthOrHeight = matchWidthOrHeight; ReferencePixelsPerUnit = referencePixelsPerUnit; }
/// <summary> /// スクリーンマッチモードを設定する /// </summary> /// <param name="tMode"></param> /// <param name="tScale"></param> /// <returns></returns> public bool SetScreenMatchMode(CanvasScaler.ScreenMatchMode tMode, float tScale) { CanvasScaler tCanvasScaler = _canvasScaler; if (tCanvasScaler == null) { return(false); } tCanvasScaler.screenMatchMode = tMode; tCanvasScaler.matchWidthOrHeight = tScale; return(true); }
public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical) { //UIManager GameObject UIManagerGo = new GameObject("UIRoot"); UIManagerGo.layer = LayerMask.NameToLayer("UI"); QFramework.UIManager UIManager = UIManagerGo.AddComponent <QFramework.UIManager>(); CreateUICamera(UIManager, 99, referenceResolution, MatchMode, isOnlyUICamera, isVertical); ProjectWindowUtil.ShowCreatedAsset(UIManagerGo); //保存UIManager ReSaveUIManager(UIManagerGo); }
public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical) { //新增五个层级 EditorExpand.AddSortLayerIfNotExist("GameUI"); EditorExpand.AddSortLayerIfNotExist("Fixed"); EditorExpand.AddSortLayerIfNotExist("Normal"); EditorExpand.AddSortLayerIfNotExist("TopBar"); EditorExpand.AddSortLayerIfNotExist("PopUp"); //UIManager GameObject UIManagerGo = new GameObject("UIManager"); UIManagerGo.layer = LayerMask.NameToLayer("UI"); UIManager UIManager = UIManagerGo.AddComponent <UIManager>(); CreateUICamera(UIManager, "DefaultUI", 1, referenceResolution, MatchMode, isOnlyUICamera, isVertical); ProjectWindowUtil.ShowCreatedAsset(UIManagerGo); //保存UIManager ReSaveUIManager(UIManagerGo); }
protected virtual void HandleScaleWithScreenSize() { Vector2 vector = new Vector2((float)Screen.width, (float)Screen.height); int targetDisplay = this.m_Canvas.targetDisplay; if (targetDisplay > 0 && targetDisplay < Display.displays.Length) { Display display = Display.displays[targetDisplay]; vector = new Vector2((float)display.renderingWidth, (float)display.renderingHeight); } float scaleFactor = 0f; CanvasScaler.ScreenMatchMode screenMatchMode = this.m_ScreenMatchMode; if (screenMatchMode != CanvasScaler.ScreenMatchMode.MatchWidthOrHeight) { if (screenMatchMode != CanvasScaler.ScreenMatchMode.Expand) { if (screenMatchMode == CanvasScaler.ScreenMatchMode.Shrink) { scaleFactor = Mathf.Max(vector.x / this.m_ReferenceResolution.x, vector.y / this.m_ReferenceResolution.y); } } else { scaleFactor = Mathf.Min(vector.x / this.m_ReferenceResolution.x, vector.y / this.m_ReferenceResolution.y); } } else { float a = Mathf.Log(vector.x / this.m_ReferenceResolution.x, 2f); float b = Mathf.Log(vector.y / this.m_ReferenceResolution.y, 2f); float p = Mathf.Lerp(a, b, this.m_MatchWidthOrHeight); scaleFactor = Mathf.Pow(2f, p); } this.SetScaleFactor(scaleFactor); this.SetReferencePixelsPerUnit(this.m_ReferencePixelsPerUnit); }
public static void CreateUICamera(QFramework.UIManager UIManager, float cameraDepth, Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical) { GameObject UIManagerGo = UIManager.gameObject; UIManagerGo.AddComponent <RectTransform>(); var sObj = new SerializedObject(UIManager); //挂载点 GameObject goTmp = null; RectTransform rtTmp = null; goTmp = new GameObject("Bg"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mBgTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("AnimationUnder"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mAnimationUnderTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("Common"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mCommonTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("AnimationOn"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mAnimationOnTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("PopUI"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mPopUITrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("Const"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mConstTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("Toast"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mToastTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("Forward"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; sObj.FindProperty("mForwardTrans").objectReferenceValue = rtTmp.gameObject; goTmp = new GameObject("Design"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; // goTmp.AddComponent<QFramework.Hide>(); goTmp = new GameObject("EventSystem"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; goTmp.AddComponent <UnityEngine.EventSystems.EventSystem>(); goTmp.AddComponent <UnityEngine.EventSystems.StandaloneInputModule>(); //UIcamera GameObject cameraGo = new GameObject("UICamera"); cameraGo.transform.SetParent(UIManagerGo.transform); cameraGo.transform.localPosition = new Vector3(0, 0, -1000); Camera camera = cameraGo.AddComponent <Camera>(); camera.cullingMask = LayerMask.GetMask("UI"); camera.orthographic = true; camera.depth = cameraDepth; sObj.FindProperty("mUICamera").objectReferenceValue = camera.gameObject; //Canvas Canvas canvasComp = UIManagerGo.AddComponent <Canvas>(); canvasComp.renderMode = RenderMode.ScreenSpaceCamera; canvasComp.worldCamera = camera; canvasComp.sortingOrder = 100; sObj.FindProperty("mCanvas").objectReferenceValue = canvasComp.gameObject; //UI Raycaster sObj.FindProperty("mGraphicRaycaster").objectReferenceValue = UIManagerGo.AddComponent <GraphicRaycaster>(); //CanvasScaler CanvasScaler scaler = UIManagerGo.AddComponent <CanvasScaler>(); scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; scaler.referenceResolution = referenceResolution; scaler.screenMatchMode = MatchMode; sObj.FindProperty("mCanvasScaler").objectReferenceValue = scaler; if (!isOnlyUICamera) { camera.clearFlags = CameraClearFlags.Depth; camera.depth = cameraDepth; } else { camera.clearFlags = CameraClearFlags.SolidColor; camera.backgroundColor = Color.black; } scaler.matchWidthOrHeight = isVertical ? 1 : 0; //重新保存 ReSaveUIManager(UIManagerGo); sObj.ApplyModifiedPropertiesWithoutUndo(); }
public static void CreateUICamera(UIManager UIManager, string key, float cameraDepth, Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical) { UILayerManager.UICameraData uICameraData = new UILayerManager.UICameraData(); uICameraData.m_key = key; GameObject UIManagerGo = UIManager.gameObject; GameObject canvas = new GameObject(key); RectTransform canvasRt = canvas.AddComponent <RectTransform>(); canvasRt.SetParent(UIManagerGo.transform); uICameraData.m_root = canvas; //UIcamera GameObject cameraGo = new GameObject("UICamera"); cameraGo.transform.SetParent(canvas.transform); cameraGo.transform.localPosition = new Vector3(0, 0, -1000); Camera camera = cameraGo.AddComponent <Camera>(); camera.cullingMask = LayerMask.GetMask("UI"); camera.orthographic = true; camera.depth = cameraDepth; uICameraData.m_camera = camera; //Canvas Canvas canvasComp = canvas.AddComponent <Canvas>(); canvasComp.renderMode = RenderMode.ScreenSpaceCamera; canvasComp.worldCamera = camera; //UI Raycaster canvas.AddComponent <GraphicRaycaster>(); //CanvasScaler CanvasScaler scaler = canvas.AddComponent <CanvasScaler>(); scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; scaler.referenceResolution = referenceResolution; scaler.screenMatchMode = MatchMode; if (!isOnlyUICamera) { camera.clearFlags = CameraClearFlags.Depth; camera.depth = 1; } else { camera.clearFlags = CameraClearFlags.SolidColor; camera.backgroundColor = Color.black; } if (isVertical) { scaler.matchWidthOrHeight = 1; } else { scaler.matchWidthOrHeight = 0; } //挂载点 GameObject goTmp = null; RectTransform rtTmp = null; UILayerManager UILayerManager = UIManagerGo.GetComponent <UILayerManager>(); goTmp = new GameObject("GameUI"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(canvas.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; uICameraData.m_GameUILayerParent = goTmp.transform; goTmp = new GameObject("Fixed"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(canvas.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; uICameraData.m_FixedLayerParent = goTmp.transform; goTmp = new GameObject("Normal"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(canvas.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; uICameraData.m_NormalLayerParent = goTmp.transform; goTmp = new GameObject("TopBar"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(canvas.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; uICameraData.m_TopbarLayerParent = goTmp.transform; goTmp = new GameObject("PopUp"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(canvas.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; uICameraData.m_PopUpLayerParent = goTmp.transform; UILayerManager.UICameraList.Add(uICameraData); //重新保存 ReSaveUIManager(UIManagerGo); }
public static void CreatUIManager(Vector2 l_referenceResolution, CanvasScaler.ScreenMatchMode l_MatchMode, bool l_isOnlyUICamera, bool l_isVertical) { //UIManager GameObject l_UIManagerGo = new GameObject("UIManager"); l_UIManagerGo.layer = LayerMask.NameToLayer("UI"); //UIManager l_UIManager = l_UIManagerGo.AddComponent<UIManager>(); l_UIManagerGo.AddComponent <UIManager>(); //UIcamera GameObject l_cameraGo = new GameObject("UICamera"); l_cameraGo.transform.SetParent(l_UIManagerGo.transform); l_cameraGo.transform.localPosition = new Vector3(0, 0, -1000); Camera l_camera = l_cameraGo.AddComponent <Camera>(); l_camera.cullingMask = LayerMask.GetMask("UI"); l_camera.orthographic = true; if (!l_isOnlyUICamera) { l_camera.clearFlags = CameraClearFlags.Depth; l_camera.depth = 1; } else { l_camera.clearFlags = CameraClearFlags.SolidColor; l_camera.backgroundColor = Color.black; } //Canvas Canvas canvas = l_UIManagerGo.AddComponent <Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.worldCamera = l_camera; //UI Raycaster //GraphicRaycaster l_Graphic = l_UIManagerGo.AddComponent<GraphicRaycaster>(); l_UIManagerGo.AddComponent <GraphicRaycaster>(); //CanvasScaler CanvasScaler l_scaler = l_UIManagerGo.AddComponent <CanvasScaler>(); l_scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; l_scaler.referenceResolution = l_referenceResolution; l_scaler.screenMatchMode = l_MatchMode; if (l_isVertical) { l_scaler.matchWidthOrHeight = 1; } else { l_scaler.matchWidthOrHeight = 0; } //挂载点 GameObject l_goTmp = null; RectTransform l_rtTmp = null; UILayerManager l_layerTmp = l_UIManagerGo.GetComponent <UILayerManager>(); l_goTmp = new GameObject("GameUI"); l_goTmp.layer = LayerMask.NameToLayer("UI"); l_goTmp.transform.SetParent(l_UIManagerGo.transform); l_goTmp.transform.localScale = Vector3.one; l_rtTmp = l_goTmp.AddComponent <RectTransform>(); l_rtTmp.anchorMax = new Vector2(1, 1); l_rtTmp.anchorMin = new Vector2(0, 0); l_rtTmp.anchoredPosition3D = Vector3.zero; l_rtTmp.sizeDelta = Vector2.zero; l_layerTmp.m_GameUILayerParent = l_goTmp.transform; l_goTmp = new GameObject("Fixed"); l_goTmp.layer = LayerMask.NameToLayer("UI"); l_goTmp.transform.SetParent(l_UIManagerGo.transform); l_goTmp.transform.localScale = Vector3.one; l_rtTmp = l_goTmp.AddComponent <RectTransform>(); l_rtTmp.anchorMax = new Vector2(1, 1); l_rtTmp.anchorMin = new Vector2(0, 0); l_rtTmp.anchoredPosition3D = Vector3.zero; l_rtTmp.sizeDelta = Vector2.zero; l_layerTmp.m_FixedLayerParent = l_goTmp.transform; l_goTmp = new GameObject("Normal"); l_goTmp.layer = LayerMask.NameToLayer("UI"); l_goTmp.transform.SetParent(l_UIManagerGo.transform); l_goTmp.transform.localScale = Vector3.one; l_rtTmp = l_goTmp.AddComponent <RectTransform>(); l_rtTmp.anchorMax = new Vector2(1, 1); l_rtTmp.anchorMin = new Vector2(0, 0); l_rtTmp.anchoredPosition3D = Vector3.zero; l_rtTmp.sizeDelta = Vector2.zero; l_layerTmp.m_NormalLayerParent = l_goTmp.transform; l_goTmp = new GameObject("TopBar"); l_goTmp.layer = LayerMask.NameToLayer("UI"); l_goTmp.transform.SetParent(l_UIManagerGo.transform); l_goTmp.transform.localScale = Vector3.one; l_rtTmp = l_goTmp.AddComponent <RectTransform>(); l_rtTmp.anchorMax = new Vector2(1, 1); l_rtTmp.anchorMin = new Vector2(0, 0); l_rtTmp.anchoredPosition3D = Vector3.zero; l_rtTmp.sizeDelta = Vector2.zero; l_layerTmp.m_TopbarLayerParent = l_goTmp.transform; l_goTmp = new GameObject("PopUp"); l_goTmp.layer = LayerMask.NameToLayer("UI"); l_goTmp.transform.SetParent(l_UIManagerGo.transform); l_goTmp.transform.localScale = Vector3.one; l_rtTmp = l_goTmp.AddComponent <RectTransform>(); l_rtTmp.anchorMax = new Vector2(1, 1); l_rtTmp.anchorMin = new Vector2(0, 0); l_rtTmp.anchoredPosition3D = Vector3.zero; l_rtTmp.sizeDelta = Vector2.zero; l_layerTmp.m_PopUpLayerParent = l_goTmp.transform; //m_UILayerManager = l_layerTmp; ProjectWindowUtil.ShowCreatedAsset(l_UIManagerGo); string Path = "Resources/UI/UIManager.prefab"; FileTool.CreatFilePath(Application.dataPath + "/" + Path); PrefabUtility.CreatePrefab("Assets/" + Path, l_UIManagerGo, ReplacePrefabOptions.ConnectToPrefab); }
public void CreatUIManager(Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical) { //UIManager GameObject UIManagerGo = new GameObject("UIManager"); UIManagerGo.layer = LayerMask.NameToLayer("UI"); //UIManager UIManager = UIManagerGo.AddComponent<UIManager>(); UIManagerGo.AddComponent <UILayerManagerComponent>(); UIManagerGo.AddComponent <UIManagerComponent>(); //EventSystem GameObject evtsys = new GameObject("EventSystem"); evtsys.transform.SetParent(UIManagerGo.transform); evtsys.AddComponent <EventSystem>(); evtsys.AddComponent <StandaloneInputModule>(); //UIcamera GameObject cameraGo = new GameObject("UICamera"); cameraGo.transform.SetParent(UIManagerGo.transform); cameraGo.transform.localPosition = new Vector3(0, 0, -1000); Camera camera = cameraGo.AddComponent <Camera>(); camera.cullingMask = LayerMask.GetMask("UI"); camera.orthographic = true; if (!isOnlyUICamera) { camera.clearFlags = CameraClearFlags.Depth; camera.depth = 1; } else { camera.clearFlags = CameraClearFlags.SolidColor; camera.backgroundColor = Color.black; } //Canvas Canvas canvas = UIManagerGo.AddComponent <Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.worldCamera = camera; //UI Raycaster //GraphicRaycaster Graphic = UIManagerGo.AddComponent<GraphicRaycaster>(); UIManagerGo.AddComponent <GraphicRaycaster>(); //CanvasScaler CanvasScaler scaler = UIManagerGo.AddComponent <CanvasScaler>(); scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; scaler.referenceResolution = referenceResolution; scaler.screenMatchMode = MatchMode; scaler.matchWidthOrHeight = 1; scaler.referencePixelsPerUnit = 100; if (isVertical) { scaler.matchWidthOrHeight = 1; } else { scaler.matchWidthOrHeight = 0; } //挂载点 GameObject goTmp = null; RectTransform rtTmp = null; UILayerManagerComponent layerTmp = UIManagerGo.GetComponent <UILayerManagerComponent>(); goTmp = new GameObject("GameUI"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; layerTmp.m_GameUILayerParent = goTmp.transform; goTmp = new GameObject("Fixed"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; layerTmp.m_FixedLayerParent = goTmp.transform; goTmp = new GameObject("Normal"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; layerTmp.m_NormalLayerParent = goTmp.transform; goTmp = new GameObject("TopBar"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; layerTmp.m_TopbarLayerParent = goTmp.transform; goTmp = new GameObject("PopUp"); goTmp.layer = LayerMask.NameToLayer("UI"); goTmp.transform.SetParent(UIManagerGo.transform); goTmp.transform.localScale = Vector3.one; rtTmp = goTmp.AddComponent <RectTransform>(); rtTmp.anchorMax = new Vector2(1, 1); rtTmp.anchorMin = new Vector2(0, 0); rtTmp.anchoredPosition3D = Vector3.zero; rtTmp.sizeDelta = Vector2.zero; layerTmp.m_PopUpLayerParent = goTmp.transform; //m_UILayerManager = layerTmp; ProjectWindowUtil.ShowCreatedAsset(UIManagerGo); /* * string Path = "Resources/UI/UIManager.prefab"; * FileTool.CreatFilePath(Application.dataPath + "/" + Path); * PrefabUtility.CreatePrefab("Assets/" + Path, UIManagerGo, ReplacePrefabOptions.ConnectToPrefab); */ }