2402_86265192 2025-08-26 20:49 采纳率: 25%
浏览 11

写shader花括号换行右花括号首行缩进怎么办

img


如图,只要换行就默认缩进,怎么修改设置让它不缩进?找了一圈没有找到解决办法,求解

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-08-26 20:50
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你提到的问题是关于 Shader 编写时,花括号({})在换行后自动缩进,特别是右花括号(即 }首行缩进的问题。这种现象通常出现在 Visual Studio Code (VSCode) 或其他代码编辑器中,尤其是当你使用了某些格式化插件(如 PrettierC# ExtensionShader Graph 等)。


    ✅ 问题分析

    你遇到的情况是:

    • 在编写 Shader(例如 HLSL、GLSL、Unity ShaderLab)时,每当你输入一个 {,它会自动换行并缩进。
    • 当你输入 } 时,它也会换行,并且首行缩进(即 } 不在与左花括号对齐的同一行,而是单独一行并缩进)。

    这可能是因为:

    1. 代码格式化插件(如 Prettier)的默认规则。
    2. 语言特定的格式化设置(如 Unity 的 Shader 编辑器)。
    3. 键盘快捷键或宏行为(比如某些编辑器的自动补全功能)。

    🔧 解决方案

    1. 检查并修改格式化插件设置

    如果你使用的是 Prettier 或其他格式化工具,请修改其配置文件(.prettierrcsettings.json),禁用自动缩进。

    示例:.prettierrc 配置文件

    {
      "printWidth": 80,
      "tabWidth": 2,
      "useTabs": false,
      "semi": true,
      "singleQuote": true,
      "trailingComma": "es5",
      "bracketSpacing": true,
      "arrowParens": "always",
      "endOfLine": "auto"
    }
    

    重点:
    "bracketSpacing": true 是控制花括号是否保留空格的关键项。如果设置为 false,可能会导致 } 与前一行对齐。

    修改为:

    {
      "bracketSpacing": false
    }
    

    注意: 这个设置会影响所有语言,不是专门针对 Shader。


    2. 针对 Unity Shader 的格式化设置

    如果你是在 Unity 中编写 Shader,Unity 的内置 Shader 编辑器可能有自己的格式化逻辑。

    方法一:关闭自动格式化

    • 打开 Preferences > Text Editor > Formatting
    • 取消勾选 Auto Format on SaveFormat on Type

    方法二:使用自定义格式化规则

    • 安装 Shader Format 插件(如 Shader Format
    • 使用该插件可以自定义格式化规则,避免 } 首行缩进。

    3. 修改 VSCode 设置(适用于通用 Shader 编辑)

    在 VSCode 中,你可以通过以下方式调整格式化行为:

    步骤:

    1. 打开 File > Preferences > Settings(或按 Ctrl + ,
    2. 搜索 format on type
    3. Editor: Format On Type 设置为 false(或根据需要调整)

    更高级设置:

    settings.json 中添加以下内容:

    {
      "editor.formatOnType": false,
      "editor.defaultFormatter": "ms-vscode.csharp", // 如果你使用 C# 插件
      "shader-format.enable": true,
      "shader-format.braceStyle": "allman" // 或 "k&r" / "stroustrup"
    }
    

    重点:
    "shader-format.braceStyle" 控制花括号的风格,选择 allman 会将 } 放在单独一行并缩进;选择 k&r 则让 } 与前一行对齐。


    4. 手动修复格式(临时解决方案)

    如果你无法更改设置,可以手动修复:

    • 输入 } 后,按 Backspace 删除多余的空格和缩进。
    • 或者使用快捷键 Ctrl + Z 撤销自动缩进。

    🛠️ 示例:修改后的 Shader 格式

    原始格式(自动缩进):

    void MyFunction()
        {
            // code
        }
    

    修改后(不缩进):

    void MyFunction() {
        // code
    }
    

    ✅ 总结

    | 步骤 | 内容 | |------|------| | 1 | 检查并修改格式化插件设置(如 Prettier) | | 2 | 关闭 Unity 自动格式化功能 | | 3 | 在 VSCode 中调整格式化设置 | | 4 | 手动删除多余缩进 |

    重点:
    不要盲目依赖自动格式化工具,特别是在编写 Shader 时,保持代码风格的一致性非常重要


    如果你能提供你使用的编辑器名称和插件列表,我可以给出更具体的配置建议。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月26日