Files
ichni_Official/Assets/Scripts/Manager/PostProcessingManager.cs

58 lines
1.9 KiB
C#
Raw Normal View History

2025-09-05 10:14:45 -04:00
using System;
2025-06-03 02:42:28 -04:00
using System.Collections;
using System.Collections.Generic;
2025-07-10 08:42:30 -04:00
using System.Linq;
using System.Reflection;
using Sirenix.OdinInspector;
2026-03-14 03:13:10 -04:00
using SLSUtilities.General;
2025-06-03 02:42:28 -04:00
using UnityEngine;
using UnityEngine.Rendering;
2025-07-10 08:42:30 -04:00
using UnityEngine.Rendering.Universal;
2025-06-03 02:42:28 -04:00
namespace Ichni
{
2026-03-14 03:13:10 -04:00
public class PostProcessingManager : Singleton<PostProcessingManager>
2025-06-03 02:42:28 -04:00
{
2026-03-14 03:13:10 -04:00
public static Volume GlobalVolume => instance._globalVolume;
[ShowInInspector]
private Volume _globalVolume;
2025-07-10 08:42:30 -04:00
2026-03-14 03:13:10 -04:00
protected override void Awake()
2025-07-10 08:42:30 -04:00
{
2026-03-14 03:13:10 -04:00
base.Awake();
//FindAndCacheFeatureWithReflection();
2025-07-10 08:42:30 -04:00
}
2025-09-05 10:14:45 -04:00
private void OnDisable()
{
2026-03-14 03:13:10 -04:00
//FindAndCacheFeatureWithReflection();
2025-09-05 10:14:45 -04:00
}
2025-07-10 08:42:30 -04:00
private void FindAndCacheFeatureWithReflection()
{
var pipelineAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset;
if (pipelineAsset == null)
{
Debug.LogError("当前渲染管线不是 UniversalRenderPipelineAsset。");
return;
}
// 2. 使用反射来获取内部的 m_RendererDataList 字段
FieldInfo rendererDataListField =
typeof(UniversalRenderPipelineAsset).GetField("m_RendererDataList", BindingFlags.NonPublic | BindingFlags.Instance);
if (rendererDataListField == null)
{
Debug.LogError("在 UniversalRenderPipelineAsset 中无法通过反射找到 'm_RendererDataList' 字段。API可能已在你的URP版本中更改。");
return;
}
var rendererDataList = rendererDataListField.GetValue(pipelineAsset) as ScriptableRendererData[];
if (rendererDataList == null)
{
Debug.LogError("获取渲染器数据列表失败。");
return;
}
}
2025-06-03 02:42:28 -04:00
}
}