private void Awake() { gameObject.name = PaneName; CameraGameObject = Instantiate(Resources.Load <GameObject>("Prefabs/DefaultCamera")); CameraGameObject.transform.SetParent(transform, false); CameraGameObject.name = PaneName + "_Camera"; CameraGameObject.transform.position = CameraPosition; CameraGameObject.transform.localEulerAngles = CameraAngles; CanvasGameObject = Instantiate(Resources.Load <GameObject>("Prefabs/UI/DefaultCanvas")); CanvasGameObject.transform.SetParent(transform, false); CanvasGameObject.name = PaneName + "_Canvas"; ControlPanel = Instantiate(Resources.Load <GameObject>("Prefabs/UI/ControlPanel")).GetComponent <IControlPanel>(); ControlPanel.SetParent(CanvasGameObject.transform, false); ControlPanel.SetName(CanvasGameObject.name + "_ControlPanel"); PaneCamera = CameraGameObject.GetComponent <Camera>(); if (Orthographic) { PaneCamera.orthographic = Orthographic; PaneCamera.orthographicSize = OrthographicSize; foreach (Transform tr in CameraGameObject.transform) { Camera cam = tr.gameObject.GetComponent <Camera>(); if (cam != null) { cam.orthographic = Orthographic; cam.orthographicSize = OrthographicSize; } } } PaneCamera.cullingMask = CullingMask; PaneCamera.rect = ViewportRect; PaneCanvas = CanvasGameObject.GetComponent <Canvas>(); PaneCanvas.renderMode = RenderMode.ScreenSpaceCamera; PaneCanvas.worldCamera = PaneCamera; CaptionGameObject = Instantiate(CaptionPrefab); CaptionGameObject.name = Caption; CaptionGameObject.transform.SetParent(PaneCanvas.transform, false); float paneWidth = 0; float paneHeight = 0; switch (Type) { case EPaneType.TreeDimentional: paneWidth = Screen.width * 0.5f; paneHeight = Screen.height; break; case EPaneType.Upper: paneWidth = Screen.width * 0.5f; paneHeight = Screen.height * 0.5f; break; case EPaneType.Chart: case EPaneType.LineChart: paneWidth = Screen.width * 0.25f; paneHeight = Screen.height * 0.5f; break; } float horizontalOffset = paneWidth * 0.5f - 20f; float verticalOffset = paneHeight * 0.5f - 20f; CaptionGameObject.transform.localPosition = new Vector3(-horizontalOffset, verticalOffset, CaptionGameObject.transform.localPosition.z); Text t = CaptionGameObject.GetComponent <Text>(); if (t != null) { t.text = Caption; } CornerGameObject = Instantiate(CornerPrefab); CornerGameObject.name = "PaneCorner"; CornerGameObject.transform.SetParent(PaneCanvas.transform, false); switch (Type) { case EPaneType.TreeDimentional: paneWidth = Screen.width * 0.5f; paneHeight = Screen.height; break; case EPaneType.Upper: paneWidth = Screen.width * 0.5f; paneHeight = Screen.height * 0.5f; break; case EPaneType.Chart: case EPaneType.LineChart: paneWidth = Screen.width * 0.25f; paneHeight = Screen.height * 0.5f; break; } horizontalOffset = paneWidth * 0.5f - 10f; verticalOffset = paneHeight * 0.5f; CornerGameObject.transform.localPosition = new Vector3(horizontalOffset, verticalOffset, CornerGameObject.transform.localPosition.z); Image img = CornerGameObject.GetComponent <Image>(); if (img != null) { img.color = CornerColor; } }