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