• 游戏
  • 工业
  • 资源
  • 社区
  • 学习
  • 支持
开发
Unity 引擎
为任何平台构建2D和3D游戏
下载计划和定价
商业化
应用内购买(IAP)
发现并管理各商店的IAP
聚合平台
最大化收入并优化变现
Ad Quality
保护您应用的用户体验
Tapjoy
建立长期用户忠诚度
所有变现产品
用户获取
用户获取
被发现并获取移动用户
Unity向量AI
将玩家与合适的游戏连接
Aura设备内广告
在用户高峰参与时触达用户
所有增长产品
使用案例
3D协作
实时构建和审查3D项目
沉浸式培训
在沉浸式环境中培训
客户体验
创建互动3D体验
所有行业解决方案
行业
制造业
实现运营卓越
零售
将店内体验转化为在线体验
汽车
提升创新和车内体验
所有行业
技术库
文档
官方用户手册和API参考
开发者工具
发布版本和问题跟踪器
路线图
查看即将推出的功能
术语表
技术术语库
洞察
案例分析
真实成功案例
最佳实践指南
专家提示和技巧
所有资源
新增功能
博客
更新、信息和技术提示
新闻
新闻、故事和新闻中心
社区中心
讨论
讨论、解决问题和连接
事件
全球和本地活动
社区故事
Made with Unity
展示Unity创作者
直播活动
加入开发者、创作者和内部人员
Unity奖项
庆祝全球的Unity创作者
适合每个级别
Unity Learn
免费掌握Unity技能
专业培训
通过Unity培训师提升您的团队
Unity新手
准备开始
开始您的学习
Unity基础路径
你是Unity 新手?开始您的旅程
使用指南
可操作的技巧和最佳实践
教育
对于学生
开启您的职业生涯
对于教育者
增强您的教学
教育资助许可证
将Unity的力量带入您的机构
认证
证明您的Unity精通
支持选项
获取帮助
帮助您在Unity中取得成功
成功计划
通过专家支持更快实现目标
常见问题解答
常见问题解答
联系我们
与我们的团队联系
计划和定价
语言
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
社交
货币
采购
  • 产品
  • Unity Ads
  • 订阅
  • Unity Asset Store
  • 经销商
教育
  • 学生
  • 教师
  • 机构
  • 认证
  • 学习
  • 技能发展计划
下载
  • Unity Hub
  • 下载存档
  • Beta 版测试
Unity Labs
  • 实验室
  • 作品
资源
  • 学习平台
  • 社区
  • 文档
  • Unity QA
  • 常见问题解答
  • 服务状态
  • 案例分析
  • Made with Unity
Unity
  • 我们公司
  • 新闻简报
  • 博客
  • 事件
  • 工作机会
  • 帮助
  • 新闻
  • 合作伙伴
  • 投资人
  • 附属机构
  • 安防
  • 社会影响力
  • 包容性与多样性
  • 联系我们
版权所有 © 2025 Unity Technologies
  • 法律
  • 隐私政策
  • Cookie
  • 不要出售或分享我的个人信息

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其分支机构在美国及其他地区的商标或注册商标(单击此处获取更多信息)。其他名称或品牌是其各自所有者的商标。

Hero background image

在Unity中进行C#脚本的格式化最佳实践

为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。
请点击这里。

虽然可能没有一种正确的方式来格式化你的C#代码,但在团队中达成一致的风格可以使代码库更清晰、更易读且更具可扩展性。本页面提供了在创建自己的风格指南时,关于类、方法和注释的一些提示和关键考虑事项。

注意:这里分享的建议基于微软提供的建议。最佳的代码风格指南规则是适合你团队需求的规则。

您可以在 这里 找到代码风格指南示例或下载完整的电子书,使用 C# 风格指南以编写干净且可扩展的游戏代码(Unity 6 版)。

  • 格式化你的代码
  • 属性
  • 表达式主体属性
  • 自动实现的属性
  • 序列化
  • 大括号或缩进风格
  • 决定统一的缩进方式
  • 不要省略大括号
  • 在多行语句中保留大括号以提高清晰度
  • 标准化switch语句

格式化你的代码

与命名一起,格式化有助于减少猜测并提高代码清晰度。通过遵循标准化的风格指南,代码审查变得不再关注代码的外观,而是关注代码的功能。

省略、扩展或修改这些示例规则以适应您团队的需求。

在所有情况下,请考虑您的团队将如何实施每个格式化规则,然后让每个人统一应用。参考您团队的风格以解决任何差异。

在设置您的 Unity 开发风格指南时,请考虑以下每个代码格式化建议。

属性

属性提供了一种灵活的机制来读取、写入或计算类值。属性的行为就像公共成员变量,但实际上它们是称为 访问器 的特殊方法。每个属性都有一个获取和设置方法来访问一个私有字段,称为 后备字段。

通过这种方式,属性 封装 数据,隐藏用户或外部对象对其的未授权更改。获取器和设置器各自具有自己的访问修饰符,允许您的属性为可读写、只读或只写。

您还可以使用访问器来验证或转换数据(例如,验证数据是否符合您首选的格式或将值更改为特定单位)。

属性的语法可能会有所不同,因此您的风格指南应定义如何格式化它们。使用这些提示使您的代码中的属性保持一致。

表达式主体属性

对于单行只读属性(=>)使用表达式主体属性:这将返回私有后备字段。

自动实现的属性

其他所有内容使用较旧的 { get; set; } 语法:如果您只想公开一个公共属性而不指定后备字段,请使用 自动实现的属性。为设置和获取访问器应用表达式主体语法。如果您不想提供写入访问权限,请记得将设置器设为私有。对齐多行代码块的闭合括号与开括号。

序列化

脚本序列化是将数据结构或对象状态转换为 Unity 可以存储和稍后重建的格式的自动过程。出于性能原因,Unity 的序列化处理方式与其他编程环境不同。

序列化字段会出现在检查器中,但您不能序列化静态、常量或只读字段。它们必须是公共的或带有 [SerializeField] 属性。Unity 仅序列化某些字段类型,因此请参考 文档页面 以获取完整的序列化规则。

在处理序列化字段时,请遵循一些基本指南:

  • 使用 [SerializeField] 属性:SerializeField属性可以与私有或受保护的变量一起使用,使它们在检查器中显示。这比将变量标记为public更好地封装了数据,并防止外部对象覆盖其值。
  • 使用Range属性设置最小值和最大值:[Range(min, max)]属性很方便,如果您想限制用户可以分配给数值字段的内容。它还方便地将字段表示为检查器中的滑块。
  • 在可序列化的类或结构中分组数据,以清理检查器:定义一个公共类或结构,并用[Serializable]属性标记它。为您希望在检查器中公开的每种类型定义公共变量。

从另一个类引用此可序列化类。结果变量在检查器中以可折叠单元的形式出现。

可序列化类
可序列化类或结构可以帮助组织检查器。

大括号或缩进风格

C#中有两种常见的缩进风格:

  • Allman风格,也称为BSD风格(来自BSD Unix),将打开的花括号放在新的一行。
  • K&R风格,或称为“真正的花括号风格”,将打开的花括号与前一个头部放在同一行。

这些缩进风格也有变体。本指南中的示例使用来自Microsoft框架设计指南的Allman风格。无论您作为团队选择哪种风格,请确保每个人都遵循相同的缩进和花括号风格。

决定统一的缩进方式

缩进通常为两个或四个空格。让您团队中的每个人在编辑器首选项中达成一致设置,而不引发制表符与空格的争论。请注意,Visual Studio提供将制表符转换为空格的选项。

在Visual Studio(Windows)中,导航到工具 > 选项 > 文本编辑器 > C# > 制表符。

在Mac上的Visual Studio中,导航到首选项 > 源代码 > C#源代码。选择文本样式以调整设置。

C Sharp选项卡
在WINDOWS的VISUAL STUDIO中的选项卡设置

不要省略大括号

不要省略花括号——即使是单行语句也不例外。花括号增加了一致性,使你的代码更易于阅读和维护。在此示例中,花括号清楚地将操作DoSomething与循环分开。

如果稍后需要添加调试行或运行DoSomethingElse,花括号将已经到位。将子句放在单独一行可以让您轻松添加断点。

在多行语句中保留大括号以提高清晰度

不要从嵌套的多行语句中删除大括号。在这种情况下删除大括号不会抛出错误,但可能会导致混淆。即使大括号是可选的,也要使用大括号以提高清晰度。花括号还确保可以安全地进行修改,例如添加新逻辑,而无需重构周围的结构。

标准化switch语句

格式可能会有所不同,因此请在您的风格指南中记录团队偏好,并相应地标准化您的 switch 语句。

这是一个示例,您可以在其中缩进案例语句。通常建议包括一个默认案例。即使不需要默认案例(例如,在所有可能性都已覆盖的情况下),包括一个也可以确保代码准备好处理意外值。

  • 水平间距
  • 添加空格
  • 逗号后的间距
  • 括号后没有间距
  • 函数与括号之间没有空格
  • 避免在括号内留空格
  • 流程控制条件前的间距
  • 与比较运算符的间距
  • 可读性提示
  • 垂直间距和区域
  • Visual Studio 中的代码格式化
  • 设置一个.editorconfig文件

水平间距

像空格这样简单的东西可以增强您代码在屏幕上的外观。您的个人格式化偏好可能会有所不同,但请尝试以下建议以提高可读性。

添加空格

添加空格以减少代码密度。额外的空白可以在行的部分之间提供视觉分隔感,从而提高可读性。

逗号后的间距

在函数参数之间的逗号后使用一个空格。

括号后没有间距

在括号和函数参数后不要添加空格。

函数与括号之间没有空格

函数名称和括号之间不要使用空格。

避免在括号内留空格

尽量避免在括号内使用空格。

流程控制条件前的间距

在流程控制条件前使用一个空格,并在流程比较运算符和括号之间添加空格。

与比较运算符的间距

在比较运算符前后使用一个空格。

可读性提示

保持行短。考虑水平空白:决定一个标准行宽(80-120个字符)。将长行拆分为较小的语句,而不是让它溢出。

保持缩进/层次结构:缩进您的代码以增加可读性。

除非需要提高可读性,否则不要使用列对齐:这种类型的间距对齐变量,但可能会使类型与名称配对变得困难。

然而,列对齐对于位运算表达式或包含大量数据的结构体可能是有用的。请注意,随着您添加更多项目,这可能会为您维护列对齐带来更多工作。一些自动格式化工具可能还会改变列的对齐部分。

垂直间距和区域

您也可以利用垂直间距。将相关的脚本部分放在一起,并利用空行。尝试这些建议将您的代码从上到下组织:

  • 将依赖和/或相似的方法分组:代码需要逻辑性和连贯性。将执行相同操作的方法放在一起,以便阅读逻辑的人不必在文件中跳来跳去。
  • 利用垂直空白来分隔类的不同部分:例如,您可以在以下内容之间添加两行空白:
  • 变量声明和方法
  • 类和接口
  • 如果有助于可读性,可以使用if-then-else块

将此保持在最低限度,并在样式指南中注明适用的地方。

在代码中使用区域

#region 指令使您能够折叠和隐藏 C# 文件中的代码部分,使大型文件更易于管理和阅读。

然而,如果您遵循本指南中关于类的一般建议,您的类大小应该是可管理的,#region指令是多余的。将代码分解为更小的类,而不是将代码块隐藏在区域后面。如果源文件较短,您将不太倾向于添加区域。

注意:许多开发人员认为区域是代码异味或反模式。作为一个团队决定您站在辩论的哪一方。

Visual Studio 中的代码格式化

如果这些格式规则看起来令人不知所措,不要绝望。现代 IDE 使设置和强制执行它们变得高效。您可以创建格式规则的模板,然后一次性转换项目文件。

要为脚本编辑器设置格式规则:

  • 在Visual Studio(Windows)中,导航到工具 > 选项。找到文本编辑器 > C# > 代码样式格式化。使用设置修改常规、缩进、新行、间距和换行选项。
  • 在Mac的Visual Studio中,选择Visual Studio > 偏好设置,然后导航到源代码 > 代码格式化 > C#源代码。选择顶部的策略。然后在文本样式选项卡中设置间距和缩进。在C#格式选项卡中,调整缩进、新行、间距和换行设置。

如果您希望在任何时候强制脚本文件符合样式指南:

  • 在Visual Studio (Windows)中,转到编辑 > 高级 > 格式文档(Ctrl + K, Ctrl + D快捷键组合)。如果您只想格式化空格和制表符对齐,您还可以在编辑器底部使用运行代码清理(Ctrl + K , Ctrl + E)。
  • 在Mac的Visual Studio中,转到编辑 > 格式文档(Ctrl + I快捷键)

在Windows上,您还可以从工具 > 导入和导出设置共享您的编辑器设置。导出一个包含样式指南的 C# 代码格式的文件,然后让每个团队成员导入该文件。

Visual Studio使遵循样式指南变得简单。格式化变得像使用快捷键一样简单。

注意:您可以配置一个EditorConfig文件,而不是导入和导出Visual Studio设置。这样做可以更轻松地在不同的IDE之间共享格式,并且它还有与版本控制一起使用的额外好处。有关更多信息,请参见.NET代码样式规则选项。

虽然这并不特定于干净代码,但请务必查看在Unity中使用Visual Studio加速编程工作流程的10种方法。如果您应用这些生产力技巧,干净的代码更容易格式化和重构。

C# 偏好
预览窗口展示了您的风格指南选择。

设置一个.editorconfig文件

要在Visual Studio Code中设置.editorconfig文件,请按照以下步骤操作:

  • 在项目的根目录中,创建一个名为.editorconfig的新文件。
  • 打开.editorconfig文件并添加您所需的配置设置。

以下是C#的示例配置:

# 顶层EditorConfig文件

root = true

# Unix风格的换行符,每个文件以换行结束

[*]

end_of_line = lf

insert_final_newline = true

# 4个空格缩进

[*.cs]

indent_style = space

indent_size = 4

charset = utf-8

trim_trailing_whitespace = true

# Makefile的制表符缩进

[Makefile]

indent_style = tab

# JSON文件的特定设置

[*.json]

indent_style = space

indent_size = 2

获取更多代码风格提示

了解更多命名约定在这里或查看完整电子书。您还可以探索我们的详细代码样式指南示例。