From 234c25bc8761a4d41bc5b4aa362449cf3e806e13 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 17 Sep 2021 20:09:19 +0800 Subject: *unit image effect --- Assets/Scripts/Unit/Effect/UnitCamera.cs | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'Assets/Scripts/Unit/Effect/UnitCamera.cs') diff --git a/Assets/Scripts/Unit/Effect/UnitCamera.cs b/Assets/Scripts/Unit/Effect/UnitCamera.cs index 90d78730..abb13a00 100644 --- a/Assets/Scripts/Unit/Effect/UnitCamera.cs +++ b/Assets/Scripts/Unit/Effect/UnitCamera.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using UnityEngine; -// 专门用来渲染player character的相机,用来做特效 +// 专门用来渲染character的相机,用来做特效 [RequireComponent(typeof(Camera))] public class UnitCamera : SingletonMB { @@ -13,12 +13,22 @@ public class UnitCamera : SingletonMB private void OnEnable() { m_Camera = GetComponent(); - } - - private void OnPreRender() + m_Camera.enabled = false; + } + + // 手动渲染 + public void Render() + { + m_Camera.Render(); + } + + // 这里要用OnPreCull,不能是OnPreRender,因为设置了可见性,OnPreRender是在可见性剔除之后 + void OnPreCull() { if (pc == null) return; + if (pc.unitImageEffect == null || pc.unitImageEffect.effects.Count == 0) + return; if (m_Camera == null) return; @@ -29,6 +39,17 @@ public class UnitCamera : SingletonMB float fov = 2 * Mathf.Atan2(pc.unitDetail.snapshotBound / 2, dz) * Mathf.Rad2Deg; m_Camera.fieldOfView = fov; - } -} + // 开启unit的渲染 + pc.unitRender.SetVisibilityInAllCameras(true); + } + + void OnPostRender() + { + if (pc.unitImageEffect == null || pc.unitImageEffect.effects.Count == 0) + return; + + pc.unitRender.SetVisibilityInAllCameras(false); + } + +} \ No newline at end of file -- cgit v1.1-26-g67d0