private void SetupPane() { // canvas GameObject canvasGO = new GameObject($"EvaInfoCanvas ({pcm.name})"); canvasGO.layer = LayerMask.NameToLayer("Default"); // Important! camera culls UI layer Transform canvasTransform = canvasGO.AddComponent <RectTransform>(); canvas = canvasGO.AddComponent <Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.pixelPerfect = true; camera = FlightCamera.fetch.mainCamera; canvas.worldCamera = camera; canvas.planeDistance = camera.nearClipPlane; CanvasScaler canvasScalar = canvasGO.AddComponent <CanvasScaler>(); canvasScalar.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize; canvasGO.AddComponent <GraphicRaycaster>(); // panel root panelRootTransform = new GameObject("EvaInfoRoot").AddComponent <RectTransform>(); panelRootTransform.SetParent(canvasTransform, false); panelRootTransform.anchorMin = Vector2.zero; panelRootTransform.anchorMax = Vector2.zero; panelRootTransform.pivot = Vector2.one / 2; panelRootTransform.sizeDelta = Vector2.zero; infoPane = new EvaInfoPane(pcm, panelRootTransform); }
private void CleanupPane() { if (canvas != null) { Destroy(canvas.gameObject); } canvas = null; camera = null; panelRootTransform = null; infoPane = null; }