/// <summary> /// 创建层 /// </summary> /// <param name="layer"></param> /// <param name="goParent"></param> /// <param name="depthStart"></param> private void CreateNewLayer(UiLayer layer, GameObject goParent, int depthStart) { GameObject go = GameObjectUtility.CreateGameObject(); go.name = layer.ToString(); go.AddComponent <UIPanel>().depth = depthStart; GameObjectUtility.AddUiChild(goParent, go); go.layer = LayerMask.NameToLayer(layer.ToString()); layerGoDic[layer] = go; CreateLayerCamera(layer, LayerMask.NameToLayer(layer.ToString()), go); }
/// <summary> /// 给UiPnlModelBackground添加点击事件 /// </summary> /// <param name="ui"></param> private void AddClickEvent(BaseUi ui) { if (ui.model && ui.autoClickHide) { UiLayer layer = ui.layer; UiPnlModelBackground back = ui.modelBackground.GetComponent <UiPnlModelBackground>(); BoxCollider collider = UiUtility.AddIfMissing <BoxCollider>(back.spriteBack.gameObject); collider.isTrigger = true; UIEventListener.Get(back.spriteBack.gameObject).onClick = go => ui.Hide(); UiModelTool.ChangeTransformLayer(ui.modelBackground.gameObject, layer.ToString()); } }
/// <summary> /// 创建每一层的摄像机 /// </summary> /// <param name="layer"></param> /// <param name="layerMask"></param> /// <param name="cameraParent"></param> private void CreateLayerCamera(UiLayer layer, int layerMask, GameObject cameraParent) { GameObject go = GameObjectUtility.CreateGameObject(); go.name = layer + "Camera"; Camera camera = go.AddComponent <Camera>(); UICamera uiCamera = go.AddComponent <UICamera>(); uiCamera.eventReceiverMask = (1 << layerMask); uiCamera.allowMultiTouch = false; camera.clearFlags = CameraClearFlags.Depth; camera.cullingMask = (1 << layerMask); camera.orthographic = true; camera.orthographicSize = 1f; camera.nearClipPlane = -10f; camera.farClipPlane = 10f; camera.depth = (int)layer; GameObjectUtility.AddUiChild(cameraParent, go); camera.transform.localPosition = new Vector3(0, 0, -10f); layerCameraDic.Add(layer.ToString(), camera); }