using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.Reflection; [CustomEditor(typeof(NBPostProcessingManager))] public class PostProcessingManagerGUI : Editor { private NBPostProcessingManager _ppManager; public override void OnInspectorGUI() { _ppManager = (NBPostProcessingManager)target; serializedObject.Update(); DrawToggle("controllerIndexFlags","_controllerIndexFlags"); DrawToggle("色散开关",NBPostProcessingManager.chromaticAberrationToggles); DrawToggle("径向扭曲开关",NBPostProcessingManager.distortSpeedToggles); DrawToggle("径向模糊开关",NBPostProcessingManager.radialBlurToggles); #if CINIMACHINE_3_0 DrawToggle("震屏开关",PostProcessingManager.cameraShakeToggles); #endif DrawToggle("肌理开关",NBPostProcessingManager.overlayTextureToggles); DrawToggle("黑白闪开关",NBPostProcessingManager.flashToggles); DrawToggle("暗角开关",NBPostProcessingManager.vignetteToggles); DrawToggle32("ShaderFlags", NBPostProcessingManager.material.GetInteger(NBPostProcessFlags.FlagsId)); } void DrawToggle(string label, string propertyName) { int intValue = ReflectIntValue(propertyName); DrawToggle(label,intValue); } void DrawToggle(string label, int intValue) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(label); EditorGUILayout.LabelField(BinaryIntDrawer.DrawBinaryInt(intValue,8)); EditorGUILayout.EndHorizontal(); } void DrawToggle32(string label, int intValue) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(label); EditorGUILayout.LabelField(BinaryIntDrawer.DrawBinaryInt(intValue,32)); EditorGUILayout.EndHorizontal(); } int ReflectIntValue(string propertyName) { FieldInfo privateField = typeof(NBPostProcessingManager).GetField(propertyName, BindingFlags.NonPublic | BindingFlags.Instance); if (privateField != null) { // 获取私有字段的值 int value = (int)privateField.GetValue(_ppManager); return value; } else { Debug.LogError("PostProcessingManagerGUI获取变量错误"); return -1; } } }