Exemple #1
0
    /// <summary>
    /// Creates a new UIScreen Controller from an UIScreenManager in scene.
    /// </summary>
    /// <returns>The new user interface screen controller from scene object.</returns>
    /// <param name="screenManager">Screen manager.</param>
    public UIScreenManager CreateNewUIScreenControllerFromSceneObject(UIScreenManager screenManager)
    {
        bool alreadyExist = false;

        for (int i = 0; i < allScreenControllers.Count; i++)
        {
            if (allScreenControllers[i].uiUniqueId == screenManager.uniqueScreenId)
            {
                alreadyExist = true;
                break;
            }
        }

        Debug.LogFormat(this, "Creating new UISCreenController. AlreadyExist?[{0}]", alreadyExist);

        if (!alreadyExist)
        {
            string  id          = GetUniqueIdFrom(screenManager.uniqueScreenId);
            Vector3 newPosition = CalculateNewPositionInWorld(allScreenControllers.Count);
            //create controller for this screenManager
            UIScreenController controller = new UIScreenController(this, id, null, screenManager, newPosition);
            allScreenControllers.Add(controller);
            return(screenManager);
        }
        else
        {
            Debug.LogWarningFormat(this, "A Controller with Id[{0}] already exist! It cannot be created in this manager.", screenManager.uniqueScreenId);

            return(null);
        }
    }
Exemple #2
0
    /// <summary>
    /// Creates the new empty controller alone.
    /// </summary>
    public void CreateNewEmptyControllerAlone()
    {
        //create controller for this screenManager
        Vector3            newPosition = CalculateNewPositionInWorld(allScreenControllers.Count);
        UIScreenController controller  = new UIScreenController(this, GetUniqueId(allScreenControllers.Count), null, null, newPosition);

        allScreenControllers.Add(controller);
    }
Exemple #3
0
 private void ActivateComplementaryScreensFor(UIScreenController controller)
 {
     if (controller != null && controller.complementScreenIds != null)
     {
         for (int i = 0; i < controller.complementScreenIds.Count; ++i)
         {
             SwitchScreenById(controller.complementScreenIds[i], true);
         }
     }
 }
 /// <summary>
 /// Set This UIScreen Controller
 /// </summary>
 /// <param name="controller"></param>
 public void SetController(UIScreenController controller)
 {
     _screenController = controller;
 }
Exemple #5
0
    /// <summary>
    /// Creates the a new UIScreen manager along with its controller.
    /// </summary>
    /// <returns>The new user interface screen manager.</returns>
    /// <param name="newScreenId">New screen identifier.</param>
    public GameObject CreateNewUIScreenManager(string newScreenId = "")
    {
        if (_isLogged)
        {
            Debug.LogFormat(this, "Creating new UISCreen with layer[{0}][{1}]", LayerMask.LayerToName(systemLayer), systemLayer.value);
        }

        GameObject go = new GameObject((newScreenId == "" ? GetUniqueId(allScreenControllers.Count) : newScreenId));

        go.layer = systemLayer.value;
        Camera cam = go.AddComponent <Camera>();

        if (cam != null)
        {
            cam.orthographic        = true;
            cam.orthographicSize    = 5;
            cam.allowHDR            = false;
            cam.useOcclusionCulling = true;
            cam.clearFlags          = CameraClearFlags.Depth;
            cam.cullingMask         = 1 << systemLayer.value;
            cam.farClipPlane        = 200.0f;
            //add child Canvas
            GameObject canvasGO = new GameObject("Canvas");
            canvasGO.transform.SetParent(go.transform);
            canvasGO.layer = systemLayer.value;
            canvasGO.transform.localPosition = Vector3.zero;
            Canvas canvas = canvasGO.AddComponent <Canvas>();
            if (canvas != null)
            {
                canvas.renderMode     = RenderMode.ScreenSpaceCamera;
                canvas.worldCamera    = cam;
                canvas.planeDistance  = 100;
                canvas.sortingLayerID = systemLayer.value;
                CanvasScaler scaler = canvasGO.AddComponent <CanvasScaler>();
                if (scaler != null)
                {
                    scaler.uiScaleMode            = canvasScalerMode;
                    scaler.screenMatchMode        = canvasScalerScreenMatchMode;
                    scaler.matchWidthOrHeight     = canvasMatchModeRange;
                    scaler.referenceResolution    = canvasScalerReferenceResolution;
                    scaler.referencePixelsPerUnit = canvasScalerPixelsPerUnit;
                }

                GraphicRaycaster raycaster = canvasGO.AddComponent <GraphicRaycaster>();
                if (raycaster != null)
                {
                    raycaster.ignoreReversedGraphics = true;
                    raycaster.blockingObjects        = GraphicRaycaster.BlockingObjects.None;
                }

                UIScreenManager screenManager = go.AddComponent <UIScreenManager>();
                if (screenManager != null)
                {
                    Vector3 newPosition = CalculateNewPositionInWorld(allScreenControllers.Count);
                    //create controller for this screenManager
                    UIScreenController controller = new UIScreenController(this, go.name, null, screenManager, newPosition);
                    allScreenControllers.Add(controller);
                }

                if (addHelpFrameToCreatedScreens && helpFramePrefab != null)
                {
                    GameObject helpFrame = GameObject.Instantiate(helpFramePrefab);
                    helpFrame.name = helpFramePrefab.name;
                    helpFrame.transform.SetParent(canvasGO.transform);
                    helpFrame.transform.localScale = Vector3.one;
                    RectTransform rect = helpFrame.GetComponent <RectTransform>();
                    if (rect != null)
                    {
                        rect.anchorMin = Vector2.zero;
                        rect.anchorMax = Vector2.one;
                        rect.offsetMin = Vector2.zero;
                        rect.offsetMax = Vector2.zero;
                    }
                    helpFrame.transform.localPosition = Vector3.zero;
                    Text textId = helpFrame.GetComponentInChildren <Text>();
                    if (textId != null)
                    {
                        textId.text = go.name;
                    }
                }
            }
        }
        return(go);
    }