using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; [ExecuteAlways] public class AutoLoadPipelineAsset : MonoBehaviour { [SerializeField] private UniversalRenderPipelineAsset m_PipelineAsset; private RenderPipelineAsset m_PreviousPipelineAsset; private bool m_overrodeQualitySettings; void OnEnable() { UpdatePipeline(); } void OnDisable() { ResetPipeline(); } private void UpdatePipeline() { if (m_PipelineAsset) { if (QualitySettings.renderPipeline != null && QualitySettings.renderPipeline != m_PipelineAsset) { m_PreviousPipelineAsset = QualitySettings.renderPipeline; QualitySettings.renderPipeline = m_PipelineAsset; m_overrodeQualitySettings = true; } else if (GraphicsSettings.renderPipelineAsset != m_PipelineAsset) { m_PreviousPipelineAsset = GraphicsSettings.renderPipelineAsset; GraphicsSettings.renderPipelineAsset = m_PipelineAsset; m_overrodeQualitySettings = false; } } } private void ResetPipeline() { if (m_PreviousPipelineAsset) { if (m_overrodeQualitySettings) { QualitySettings.renderPipeline = m_PreviousPipelineAsset; } else { GraphicsSettings.renderPipelineAsset = m_PreviousPipelineAsset; } } } }