投稿

2024の投稿を表示しています

ShaderGraphのCustomGUIEditorでデフォルト表示がしたい

通常のシェーダーではShaderGUIを継承したクラスを作成すればInspectorがまっさらな状態になって色々カスタマイズができるがShaderGraphで作成したInspectorをカスタマイズする場合はBaseShaderGUIを継承すると デフォルト表示であるSurfaceOptions、SurfaceInputs、AdvancedOptionsのトグル領域をそのまま使用することができる 【Unity】ShaderGraphで作成したシェーダーのInspectorを拡張する ShaderGUIではOnGUIでbase.OnGUIを実行すればデフォルト表示をしてくれるがBaseShaderGUIではそれができないので調べたところDrawSurfaceInput内でBaseShaderGUI.DrawShaderGraphPropertiesを実行すれば良いのだがinternalのためアクセスできない そこでリフレクションを使って解決した MethodInfo DrawShaderGraphPropertiesInfo; public override void DrawSurfaceInputs(Material material) { if (DrawShaderGraphPropertiesInfo == null) { var assembly = typeof(BaseShaderGUI).Assembly; var baseShaderGUI = assembly.GetType("UnityEditor.BaseShaderGUI"); DrawShaderGraphPropertiesInfo = baseShaderGUI.GetMethod("DrawShaderGraphProperties", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); } else { DrawShaderGraphPropertiesInfo.Invoke(this, new object[] { material, pr...