123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /****************************************************************************
- * Copyright (c) 2017 ~ 2020.1 liangxie
- *
- * http://qframework.io
- * https://github.com/liangxiegame/QFramework
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- ****************************************************************************/
- using UnityEngine;
- using UnityEngine.UI;
- namespace QFramework
- {
- [MonoSingletonPath("UIRoot")]
- public class UIRoot : MonoBehaviour,ISingleton
- {
- public Camera UICamera;
- public Canvas Canvas;
- public CanvasScaler CanvasScaler;
- public GraphicRaycaster GraphicRaycaster;
- public RectTransform Bg;
- public RectTransform Common;
- public RectTransform PopUI;
- public RectTransform CanvasPanel;
-
- private new static UIRoot mInstance;
- public new static UIRoot Instance
- {
- get
- {
- if (!mInstance)
- {
- mInstance = FindObjectOfType<UIRoot>();
- }
- if (!mInstance)
- {
- Instantiate(Resources.Load<GameObject>("UIRoot"));
- mInstance = MonoSingletonProperty<UIRoot>.Instance;
- mInstance.name = "UIRoot";
- DontDestroyOnLoad(mInstance);
- }
- return mInstance;
- }
- }
- public Camera Camera
- {
- get { return UICamera; }
- }
- public void SetResolution(int width, int height, float matchOnWidthOrHeight)
- {
- CanvasScaler.referenceResolution = new Vector2(width, height);
- CanvasScaler.matchWidthOrHeight = matchOnWidthOrHeight;
- }
- public Vector2 GetResolution()
- {
- return CanvasScaler.referenceResolution;
- }
- public float GetMatchOrWidthOrHeight()
- {
- return CanvasScaler.matchWidthOrHeight;
- }
- public void ScreenSpaceOverlayRenderMode()
- {
- Canvas.renderMode = UnityEngine.RenderMode.ScreenSpaceOverlay;
- UICamera.gameObject.SetActive(false);
- }
- public void ScreenSpaceCameraRenderMode()
- {
- Canvas.renderMode = RenderMode.ScreenSpaceCamera;
- UICamera.gameObject.SetActive(true);
- Canvas.worldCamera = UICamera;
- }
- public void SetLevelOfPanel(UILevel level, IPanel panel)
- {
- var canvas = panel.Transform.GetComponent<Canvas>();
- canvas.transform.parent = null;
- canvas.transform.position = Vector3.zero;
- if (canvas)
- {
- panel.Transform.SetParent(CanvasPanel);
- }
- else
- {
- switch (level)
- {
- case UILevel.Bg:
- panel.Transform.SetParent(Bg);
- break;
- case UILevel.Common:
- panel.Transform.SetParent(Common);
- break;
- case UILevel.PopUI:
- panel.Transform.SetParent(PopUI);
- break;
- }
- }
- }
- public void OnSingletonInit()
- {
-
- }
- }
- }
|