/// <summary> /// 关闭描边效果 /// </summary> public static void DisableOutlineFilter() { int mask = LayerMask.GetMask(new string[] { "Effect" }); mCamera = Camera.main; if (mCamera == null) { return; } OutlineFilter filter = mCamera.GetComponent <OutlineFilter>(); if (filter == null) { return; } Destroy(filter); mCamera.cullingMask = mCamera.cullingMask | mask; Camera[] cameras = mCamera.GetComponentsInChildren <Camera>(); for (int i = 0; i < cameras.Length; i++) { Camera cam = cameras[i]; if (cam != mCamera) { GameObject go = cam.gameObject; Destroy(cam); Destroy(go); } } mCamera = null; }
/// <summary> /// 开启描边效果 /// </summary> public static void EnableOutlineFilter() { int mask = LayerMask.GetMask(new string[] { "Effect" }); mCamera = Camera.main; if (mCamera == null) { return; } OutlineFilter outlineFilter = mCamera.gameObject.AddComponent <OutlineFilter>(); mCamera.cullingMask = mCamera.cullingMask & ~mask; GameObject go = new GameObject(); go.name = mCamera.name + " Effect"; go.transform.parent = mCamera.transform; go.transform.localPosition = Vector2.zero; go.transform.localRotation = Quaternion.identity; Camera effectCam = go.AddComponent <Camera>(); effectCam.aspect = mCamera.aspect; effectCam.backgroundColor = mCamera.backgroundColor; effectCam.nearClipPlane = mCamera.nearClipPlane; effectCam.farClipPlane = mCamera.farClipPlane; effectCam.fieldOfView = mCamera.fieldOfView; effectCam.pixelRect = mCamera.pixelRect; effectCam.rect = mCamera.rect; effectCam.clearFlags = CameraClearFlags.Nothing; effectCam.cullingMask = mask; effectCam.enabled = false; outlineFilter.effectCam = effectCam; }