Пример #1
0
    static void InitRoot()
    {
        GameObject go = new GameObject("UIRoot");

        go.layer   = LayerMask.NameToLayer("UI");
        m_Instance = go.AddComponent <XPageRoot>();
        go.AddComponent <RectTransform>();
        m_Instance.root = go.transform;

        Canvas can = go.AddComponent <Canvas>();

        can.renderMode   = RenderMode.ScreenSpaceCamera;
        can.pixelPerfect = true;
        GameObject camObj = new GameObject("MainCamera");

        camObj.layer                   = LayerMask.NameToLayer("UI");
        camObj.tag                     = "MainCamera";
        camObj.transform.parent        = go.transform;
        camObj.transform.localPosition = new Vector3(0, 0, -100f);
        Camera cam = camObj.AddComponent <Camera>();

        cam.clearFlags      = CameraClearFlags.Depth;
        cam.orthographic    = true;
        cam.farClipPlane    = 200f;
        can.worldCamera     = cam;
        m_Instance.uiCamera = cam;
        cam.cullingMask     = 1 << 5;
        cam.nearClipPlane   = -50f;
        cam.farClipPlane    = 50f;

        //add audio listener
        camObj.AddComponent <AudioListener>();
        //camObj.AddComponent<GUILayer>();

        CanvasScaler cs = go.AddComponent <CanvasScaler>();

        cs.uiScaleMode         = CanvasScaler.ScaleMode.ScaleWithScreenSize;
        cs.referenceResolution = new Vector2(1136f, 640f);
        cs.screenMatchMode     = CanvasScaler.ScreenMatchMode.Expand;

        ////add auto scale camera fix size.
        //TTCameraScaler tcs = go.AddComponent<TTCameraScaler>();
        //tcs.scaler = cs;

        //set the raycaster
        //GraphicRaycaster gr = go.AddComponent<GraphicRaycaster>();

        GameObject subRoot = CreateSubCanvasForRoot(go.transform, 0);

        subRoot.name          = "NormalRoot";
        m_Instance.normalRoot = subRoot.transform;

        subRoot              = CreateSubCanvasForRoot(go.transform, 250);
        subRoot.name         = "PopupRoot";
        m_Instance.popupRoot = subRoot.transform;

        subRoot              = CreateSubCanvasForRoot(go.transform, 500);
        subRoot.name         = "FixedRoot";
        m_Instance.fixedRoot = subRoot.transform;

        subRoot                = CreateSubCanvasForRoot(go.transform, 750);
        subRoot.name           = "ToppestRoot";
        m_Instance.ToppestRoot = subRoot.transform;

        //add Event System
        GameObject esObj = GameObject.Find("EventSystem");

        if (esObj != null)
        {
            GameObject.DestroyImmediate(esObj);
        }

        GameObject eventObj = new GameObject("EventSystem");

        eventObj.layer = LayerMask.NameToLayer("UI");
        eventObj.transform.SetParent(go.transform);
        eventObj.AddComponent <EventSystem>();
        if (!Application.isMobilePlatform || Application.isEditor)
        {
            eventObj.AddComponent <UnityEngine.EventSystems.StandaloneInputModule>();
        }
        else
        {
            eventObj.AddComponent <UnityEngine.EventSystems.TouchInputModule>();
        }
    }
Пример #2
0
 void OnDestroy()
 {
     m_Instance = null;
 }