一、Preference
1.1 General
属性 | 功能 |
---|---|
Auto Refresh | 启用此设置可在资源更改时自动更新资源。 |
Load Previous Project on Startup | 启用此设置可在启动时始终加载上一个项目。 |
Compress Assets on Import | 启用此设置可在导入期间自动压缩资源。 |
Verify Saving Assets | 如果要在退出 Unity 时单独验证要保存的资源,请启用此设置。 |
Script Changes While Playing | 选择在 Editor 中运行游戏时脚本发生更改的情况下 Unity 采取的行为。 |
Editor Font | 选择要在 Unity Editor 中显示的字体。默认字体为 Inter。 |
Enable Alpha Numeric Sorting | 启用此设置可在 Hierarchy 窗口的右上角显示一个按钮,用于在变换 (Transform) 排序(默认)和字母数字 (Alphanumeric) 排序之间切换。 |
Enable Code Coverage | 启用此设置可访问 Mono 公开的代码覆盖率数据的接口。代码覆盖率可显示在代码运行时执行了多少代码。此功能通常与自动化的单元测试相关联,但是当 Editor 正在运行时,可以随时收集 Unity 中的覆盖率数据。有关更多信息,请参阅 Coverage API 的文档。 |
Interaction Mode | 指定 Editor 在最长空闲多长时间之后更新。一帧结束后,Editor 将等待指定的时间,直到下一帧开始。 |
1.2 Analysis
Analysis 偏好设置可定义性能分析器 (Profiler) 的设置。
属性 | 功能 |
---|---|
Frame Count | 选择要在 Profiler 窗口中显示的帧数。 |
Remember last recording state | 保存和加载性能分析器会话之间的记录状态。 |
Default recording state | 选择在性能分析器启动时是启用还是禁用记录。 |
二、预设
使用预设可在多个组件和资源之间重用属性设置。
使用预设还可指定新组件的默认属性以及资源的导入设置。可使用 Presets 设置来查看和选择要用于默认设置的预设。
预设功能只能在 Editor 中使用。可在 Unity Editor 的扩展中支持预设。预设不能在运行时用于 Unity Player。
更多
三、快捷键更改
四、Project Setting
4.1 Editor
Prefab Editing Environments
- Regular Environment 在预制件模式下将一个场景指定为常规预制件(即具有常规变换组件的预制件)的编辑环境。这样便可以根据选择的背景(而不是空场景)编辑预制件。
- UI Environment 在预制件模式下将一个场景指定为 UI 预制件(即具有矩形变换组件的预制件)的编辑环境。这样便可以根据选择的背景(而不是空场景)编辑预制件。
ETC Texture Compress
指定用于 ETC 纹理的不同压缩质量的压缩工具。
可用的压缩工具包括 etcpak、ETCPACK 和 Etc2Comp。它们都是第三方压缩工具库。
Line Endings For New Scripts
选择文件行尾格式以应用于在 Editor 中创建的新脚本。请注意,配置这些设置不会转换现有脚本。
Enable Texture Streaming in Play Mode
在播放模式下启用 Mipmap 纹理串流。要启用功能还必须启用 Quality Texture Streaming 设置。
Asynchronous Shader Compilation
启用此复选框可使 Unity 在后台编译着色器。编译时,Unity 引擎使用虚拟着色器在 Editor 中渲染几何体。着色器编译完成后,引擎将重新换入您的着色器变体。这意味着 Editor 将无缝运行,而无需等待 Unity 引擎编译每个着色器变体后才进行渲染。
4.2 Graphics
Transparency Sort Mode
定义按对象在特定轴上的距离渲染对象的顺序。
4.2.1 Tier Setting
Graphics Tier 值是从正在使用的硬件自动检测的。也可以通过脚本更改它。
使用这些设置,可以通过调整内置定义来对渲染和着色器编译进行特定于平台的调整。
属性 | 功能 |
---|---|
Standard Shader Quality | 将标准着色器 (Standard Shader) 的质量设置为 High、Medium 或 Low。 |
Reflection Probes Box Projection | 为反射探针上的反射 UV 贴图启用投影。 |
Reflection Probes Blending | 启用反射探针上的混合。 |
Detail Normal Map | 启用细节法线贴图 (Detail Normal Map) 采样(如果已分配)。 |
Enable Semitransparent Shadows | 启用半透明阴影。 |
Enable Light Probe Proxy Volume | 允许渲染插值光照探针的 3D 网格。 |
Cascaded Shadows | 启用级联阴影贴图。 |
Use HDR | 为此层启用高动态范围渲染。 |
HDR Mode | 选择为当前图形层启用 HDR 时用于 HDR 缓冲区的格式。默认情况下,此设置为 FP16。 |
Rendering Path | 选择 Unity 应如何渲染图形。不同的渲染路径会影响游戏的性能以及光照和阴影的计算方式。有些路径比其他路径更适合不同的平台和硬件。 |
Realtime Global Illumination CPU Usage | 选择在运行时为最终光照计算分配多少 CPU 使用率。增加此值会加快系统对光照更改的反应速度,成本是使用更多 CPU 时间。 |
4.2.2 Built-in shader settings
使用这些设置可指定要用于每个列出的内置功能的着色器。
渲染路径 | 着色器 |
---|---|
Deferred | 与延迟着色结合使用。 |
Deferred Reflection | 与反射探针及延迟光照结合使用。 |
Screen Space shadows | 与 PC/游戏主机平台上的方向光的级联阴影贴图结合使用。 |
Legacy deferred | 与旧版延迟光照结合使用。 |
Motion vectors | 用于基于对象的运动矢量计算。 |
Lens Flare | 与镜头光晕结合使用。 |
Light Halo | 与光环结合使用。 |
对于每个功能,可以选择要使用的着色器类型:
- No Support 禁用此计算。如果不使用延迟着色或光照,请使用此设置。这样可以节省构建的游戏数据文件中的一些空间。
- Built-in Shader 使用 Unity 的内置着色器进行计算。此为默认值。
- Custom Shader 使用自己的兼容着色器进行计算。这样可以对延迟渲染进行深度自定义。
Always-included Shaders
指定始终与项目一起存储(即使场景中没有任何对象实际使用这些着色器)的着色器列表。应将流式 AssetBundles 使用的着色器添加到此列表中来确保可以访问这些着色器,这一点非常重要。
Shader stripping
通过剥离某些着色器,降低构建数据大小并缩短加载时间。
默认情况下,Unity 会查看场景和光照贴图设置来确定未使用的雾效和光照贴图模式,并跳过对应的着色器变体。
但是,如果要构建 Asset Bundles,则可选择特定模式,以确保包含要使用的模式。
4.3 Physics
属性 | 功能 |
---|---|
Gravity | 使用 x、y 和 z 轴设置应用于所有刚体组件的重力。对于真实的重力设置,应将负数应用于 y 轴。重力以每平方秒的世界单位定义。注意:如果增大重力,可能还需要增大 Default Solver Iterations 值以保持稳定的接触。 |
Default Material | 设置在没有为单独碰撞体分配材质的情况下需要使用的默认物理材质。 |
Bounce Threshold | 设置速度值。如果两个碰撞对象的相对速度低于此值,则它们在碰撞后不会相互反弹。此值还可以减少抖动,因此不建议将其设置为非常低的值。 |
Sleep Threshold | 设置一个全局能量阈值;当低于该阈值时,非运动刚体(即不受物理系统控制的刚体)可进入睡眠状态。刚体处于睡眠状态不会每帧更新,因此可减少资源消耗。如果刚体的动能除以其质量低于此阈值,该刚体将作为睡眠候选者。 |
Default Contact Offset | 设置碰撞检测系统用于产生碰撞接触的距离。该值必须为正,如果设置得太接近零,可能导致抖动。默认情况下,该值设置为 0.01。仅当碰撞体的距离小于其接触偏移值的总和时,碰撞体才产生碰撞接触。 |
Default Solver Iterations | 定义 Unity 在每个物理帧运行的解算器进程数。解算器是小型物理引擎任务,决定了许多物理交互,例如关节运动或管理重叠刚体组件之间的接触。此设置会影响解算器输出的质量,如果使用非默认的 Time.fixedDeltaTime,或者配置要求极高,建议更改此属性。通常,此属性用于减少关节或接触引起的抖动。 |
Default Solver Velocity Iterations | 设置解算器在每个物理帧中执行的速度进程数。解算器执行的进程越多,刚体反弹后产生的退回速度的精度就越高。如果遇到连接的刚体组件或布娃娃在碰撞后移动太多的问题,请尝试增加此值。 |
Queries Hit Backfaces | 如果希望物理查询(例如 Physics.Raycast)检测是否命中 MeshColliders 的背面三角形,请启用此选项。默认情况下会禁用此设置。 |
Queries Hit Triggers | 如果希望物理命中测试(例如射线投射、SphereCasts 和 SphereTests)在与标记为触发器的碰撞体相交时返回命中,请启用此选项。单个射线投射可以覆盖此行为。默认情况下会启用此设置。 |
Enable Adaptive Force | 启用此选项可启用自适应作用力。自适应作用力会影响通过一堆对象传递力的方式,可提供更真实的行为。默认情况下会禁用此设置。 |
Contacts Generation | 选择接触生成方法。 |
Auto Simulation | 启用此选项可自动运行物理模拟或允许对其进行显式控制。 |
Auto Sync Transforms | 启用此选项可在变换组件发生更改时自动将变换更改与物理系统同步。默认情况下会禁用此设置。 |
Contact Pairs Mode | 选择要使用的接触对生成类型。 |
Broadphase Type | 选择要在物理模拟中使用的粗筛阶段算法。请参阅有关 PhysX SDK 和刚体碰撞 (Rigid Body Collision) 的 NVIDIA 文档。 |
World Bounds | 使用 Multibox Pruning Broadphase 算法时,定义包围世界的 2D 网格以防止相距遥远的对象相互影响。仅在 Broadphase Type 设置为 Multibox Pruning Broadphase 时使用此选项。 |
World Subdivisions | 2D 网格算法中沿 x 和 z 轴的单元格数。仅在 Broadphase Type 设置为 Multibox Pruning Broadphase 时使用此选项。 |
Friction Type | 选择用于模拟的摩擦力算法。 |
Enable Enhanced Determinism | 无论角色是否存在,场景中的模拟都是一致的(前提是游戏以确定的顺序插入角色)。此模式牺牲了一些性能来确保这种额外的确定性。 |
Enable Unified Heightmaps | 启用此选项可以像处理网格碰撞一样处理地形碰撞。 |
Solver Type | 选择要用于模拟的 PhysX 解算器。 |
Layer Collision Matrix | 定义基于层的碰撞检测系统的行为方式。选择碰撞矩阵中的哪些层与其他层交互(勾选相应层即可)。 |
Distance | 定义每个互碰撞的布料粒子的包裹球体的直径。Unity 确保这些球体在模拟过程中不会重叠。Distance 属性的值应小于配置中的两个粒子之间的最小距离。如果距离较大,则布料碰撞可能违反某些距离约束并导致抖动。 |
Stiffness | 互碰撞的布料粒子之间的分离冲力的强度。此值由布料解算器进行计算,应足以保持粒子分离。 |
4.4 Quality
4.4.1 Rendering
属性 | 功能 |
---|---|
Pixel Light Count | 设置 Unity 使用前向渲染时的最大像素光照数。 |
Texture Quality | 选择是以最大分辨率还是以更小的分辨率显示纹理(较低的分辨率具有较低的处理开销)。 |
Anisotropic Textures | 选择 Unity 是否以及如何使用各向异性纹理。 |
AntiAliasing | 选择 Unity 使用的抗锯齿级别。内置硬件抗锯齿功能不适用于延迟着色和 HDR 渲染。对于这些情况,需要使用抗锯齿图像效果。 |
Soft Particles | 启用此选项可对粒子使用软混合。 |
Realtime Reflection Probes | 启用此选项可在游戏过程中更新反射探针。 |
Billboards Face Camera Position | 启用此选项可在渲染时强制公告牌面向摄像机而不是摄像机平面。 |
Resolution Scaling Fixed DPI Factor | 将设备的屏幕分辨率降低到原始分辨率以下。 |
Texture Streaming | 启用此复选框可使用纹理串流 (Texture Streaming)。 |
Texture Streaming
启用此复选框可使用纹理串流 (Texture Streaming)。如果不打算使用纹理串流,请禁用此功能以避免 CPU 内存开销。
- Add All Cameras 启用此复选框可使 Unity 为项目中的所有激活摄像机计算纹理串流。默认情况下会启用此选项。这是将现有项目迁移到纹理串流的最快方法。如果要排除特定的摄像机,请将 Streaming Controller 组件添加到该摄像机,然后将其禁用。
如果禁用此属性,Unity 仅计算包含 Streaming Controller 组件的游戏对象的纹理串流。这可用于更精细地控制纹理串流。请参阅有关纹理串流 API:控制用于纹理串流的摄像机的文档以了解更多详细信息。- Memory Budget 设置要分配给所有已加载纹理的内存总量(以 MB 为单位)。当容量已满时,Unity 会丢弃不使用的 Mipmap,以便为需要使用的 Mipmap 腾出空间。默认内存预算为 512MB。
串流纹理会选择尽可能低级别的 Mipmap,以尽量满足内存预算。Unity 总是以最大分辨率加载非串流纹理(即使超出预算)。
Memory Budget 包括非串流纹理。例如,如果预算为 100MB 并且有 90MB 的非串流纹理,则纹理串流系统会尝试在剩余的 10MB 中容纳所有串流纹理。如果不能容纳,则以较低的分辨率加载 Mipmap。
Unity 认为 Max Level Reduction 的优先级高于 Memory Budget。纹理串流系统丢弃的 Mipmap 数量绝不会超过 Max Level Reduction__,即使丢弃的数量不足会导致内存超过纹理串流 Memory Budget_ 的情况下也是如此。- Renderers Per Frame 此属性可以控制主线程和关联作业的 CPU 处理开销。默认值为 512(即每帧处理 512 个网格渲染器)。较低的值会缩短处理时间,但会增加 Unity 加载 Mipmap 的延迟时间。
- Max Level Reduction 设置在纹理串流系统达到 Memory Budget 限制的情况下可以丢弃的最大 Mipmap 数量。默认情况下,此设置为 2(表示系统丢弃的 Mipmap 数量不超过 2 个)。
纹理串流系统丢弃的 Mipmap 数量绝不会超过此值,即使丢弃的数量不足会导致内存超过纹理串流 Memory Budget 的情况下也是如此。
此值也是纹理串流系统最初在启动时加载的 Mipmap 级别。例如,当此设置为 2 时,Unity 会在第一次加载时跳过两个最高的 Mipmap。- Max IO Requests 设置来自纹理串流系统并且在任何时刻都处于活动状态的纹理文件输入/输出 (IO) 请求的最大数量。默认情况下,该值设置为 1024。此默认值设置得足够大,可以防止由于异步上传 (Async Upload) 管线或文件系统本身而导致已处于活动状态的 IO 数量超出 IO 上限。
如果场景纹理内容发生明显且快速的变化,系统可能会尝试加载大量纹理 Mipmap 而使文件 IO 无法应对此需求。降低此值可减少纹理串流系统生成的 IO 带宽。因此可以更快响应不断变化的 Mipmap 要求。
4.4.2 Shadow
属性 | 功能 |
---|---|
Shadowmask Mode | 使用阴影遮罩混合光照模式时选择阴影遮罩行为。 |
Shadowmask | 投射阴影的静态游戏对象总是投射烘焙阴影。 |
Shadows | 选择要使用的阴影类型。可用选项包括 Hard and Soft Shadows、Hard Shadows Only 和 Disable Shadows。 |
Shadow Resolution | 选择渲染阴影的分辨率。可用选项包括 Low Resolution、Medium Resolution、High Resolution 和 Very High Resolution。分辨率越高,处理开销越大。 |
Shadow Projection | 选择投射方向光的阴影时使用的方法。 |
Shadow Distance | 输入可以看到阴影的相对于摄像机的最大距离。Unity 不会渲染超出此距离的阴影。 |
Shadow Near Plane Offset | 输入阴影*面偏移(用于解决大三角形由于阴影平坠而扭曲的问题)。 |
Shadow Cascades | 选择要使用的阴影级联数量。可用选项包括 No Cascades、Two Cascades 或 Four Cascades。级联数量越高,提供的质量越高,但代价是处理开销增大(有关更多详细信息,请参阅阴影级联 (Shadow Cascades))。 |
Cascade splits | 通过向左或向右移动每个级联之间的垂直线来调整级联阴影分割。 |
4.4.3 Other
属性 | 功能 |
---|---|
Blend Weights | 选择在动画期间可以影响给定顶点的骨骼数量。可用选项包括 1 Bone、2 Bones、4 Bones 和 Unlimited。 |
V Sync Count | 选择将渲染与垂直空白同步还是根本不同步。Unity 可将渲染与显示设备的刷新率同步来避免撕裂瑕疵。可用选项包括 Every V Blank、Every Second V Blank 和 Don’t Sync。 |
Lod Bias | 设置细节级别 (LOD) 偏差。根据对象在屏幕上的大小选择 LOD 级别。当大小在两个 LOD 级别之间时,可以偏向于两个可用模型中细节级别更低或更高者。此属性设置为 0 到 +无穷大之间的值。设置为 0 到 1 之间时,表示倾向于更少细节。超过 1 的设置表示倾向于更多细节。例如,将 LOD Bias 设置为 2 并使其在 50% 距离处变化,LOD 实际上仅基于 25% 变化。 |
Maximum LOD Level | 设置游戏使用的最高 LOD。请参阅最大 LOD 级别以了解更多信息。 |
Particle Raycast Budget | 设置用于模拟粒子系统碰撞的最大射线投射数(质量设置为 Medium 或 Low)。请参阅粒子系统碰撞模块。 |
Async Upload Time Slice | 设置 Unity 将缓冲的纹理和网格数据上传到 GPU 时花费的 CPU 时间量(以毫秒/帧为单位)。请参阅 LoadingTextureandMeshData。 |
Async Upload Buffer Size | 设置 Unity 用于将纹理和网格数据串流到 GPU 的异步上传缓冲区大小(以 MB 为单位)。请参阅 LoadingTextureandMeshData。 |
五、 集成相关
Visual Studio C# 集成
RenderDoc 集成
Xcode帧调试器 集成
六、特殊文件夹
Assets
Assets 文件夹是包含 Unity 项目使用的资源的主文件夹。Editor 中的 Project 窗口的内容直接对应于 Assets 文件夹的内容。大多数 API 函数都假定所有内容都位于 Assets 文件夹中,因此不要求显式提及该文件夹。但是,有些函数需要将 Assets 文件夹作为路径名的一部分添加(例如,AssetDatabase 类中的一些函数)。
Editor
放在名为 Editor 的文件夹中的脚本被视为 Editor 脚本而不是运行时脚本。这些脚本在开发期间向 Editor 添加功能,并在运行时在构建中不可用。
可在 Assets 文件夹中的任何位置添加多个 Editor 文件夹。应将 Editor 脚本放在 Editor 文件夹内或其中的子文件夹内。
Editor 文件夹的具体位置会影响其脚本相对于其他脚本的编译时间(有关此方面的完整说明,请参阅特殊文件夹和脚本编译顺序的相关文档)。使用 Editor 脚本中的 EditorGUIUtility.Load 函数可从 Editor 文件夹中的 Resources 文件夹加载资源。这些资源只能通过 Editor 脚本加载,并会从构建中剥离。
注意:如果脚本位于 Editor 文件夹中,Unity 不允许将派生自 MonoBehaviour 的组件分配给游戏对象。
Editor Default Resources
Editor 脚本可以使用通过 EditorGUIUtility.Load 函数按需加载的资源文件。此函数在名为 Editor Default Resources 的文件夹中查找资源文件。
只能有一个 Editor Default Resources 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Editor Default Resources 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 EditorGUIUtility.Load 函数的路径中包含子文件夹路径。
Gizmos
Gizmos 允许将图形添加到 Scene 视图,以帮助可视化不可见的设计细节。Gizmos.DrawIcon 函数在场景中放置一个图标,作为特殊对象或位置的标记。必须将用于绘制此图标的图像文件放在名为 Gizmos 的文件夹中,这样才能被 DrawIcon 函数找到。
只能有一个 Gizmos 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Gizmos 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 Gizmos.DrawIcon 函数的路径中包含子文件夹路径。
Resources
可从脚本中按需加载资源,而不必在场景中创建资源实例以用于游戏。为此,应将资源放在一个名为 Resources 的文件夹中。通过使用 Resources.Load 函数即可加载这些资源。
可在 Assets 文件夹中的任何位置添加多个 Resources 文件夹。将所需的资源文件放在 Resources 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 Resources.Load 函数的路径中包含子文件夹路径。
请注意,如果 Resources 文件夹是 Editor 的子文件夹,则其中的资源可通过 Editor 脚本加载,但会从构建中剥离。
Standard Assets
导入标准资源包(菜单:Assets > Import Package__)时,资源将放在一个名为 Standard Assets__ 的文件夹中。除了包含资源之外,这些文件夹还会对脚本编译顺序产生影响;请参阅关于特殊文件夹和脚本编译顺序的页面以了解更多详细信息。
只能有一个 Standard Assets 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 Standard Assets 文件夹内或其中的子文件夹内。
StreamingAssets
尽管将资源直接合并到构建中更为常见,但有时可能希望资源以其原始格式作为单独的文件提供。例如,需要从文件系统访问视频文件,而不是用作 MovieTexture 在 iOS 上播放该视频。将一个文件放在名为 StreamingAssets 的文件夹中,这样就会将其按原样复制到目标计算机,然后就能从特定文件夹中访问该文件。请参阅关于流媒体资源 (Streaming Assets) 的页面以了解更多详细信息。
只能有一个 StreamingAssets 文件夹,且必须将其放在项目的根目录;直接位于 Assets 文件夹中。将所需的资源文件放在此 StreamingAssets 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在用于引用流媒体资源的路径中包含子文件夹路径。
隐藏的资源
在导入过程中,Unity 完全忽略 Assets 文件夹(或其子文件夹)中的以下文件和文件夹:
隐藏的文件夹
以“.”开头的文件和文件夹。
以“~”结尾的文件和文件夹。
名为 cvs 的文件和文件夹。
扩展名为 .tmp 的文件。
七、命令行参数
命令 | 详细信息 |
---|---|
-accept-apiupdate | 使用此命令行选项可指定在批处理模式下启动 Unity 时应运行 APIUpdater。 |
-batchmode | 以批处理模式运行 Unity。 Application.isBatchMode可以判断是否为batch mode。 |
-createProject pathname | 在指定路径中创建一个空项目。 |
-deepprofiling | 对 CPU 性能分析器启用深度性能分析选项。 |
-disable-assembly-updater | 指定一个以空格分隔的程序集名称列表作为 Unity 在自动更新时忽略的参数。 |
-diag-debug-shader-compiler | Unity 仅启动一个着色器编译器实例,并将其超时强制为一小时。 |
-job-worker-count | 为 Unity JobQueue Job Worker Count 指定最大线程数。 |
-logFile | 指定 Unity 写入 Editor 或 Windows/Linux/OSX 独立日志文件的位置。 |
-nographics | 在批处理模式下运行此命令时,不会初始化图形设备。-nographics 不允许烘焙 GI,因为 Enlighten 需要 GPU 加速。 |
-profiler-log-file | 此参数可以设置 Unity Profiler 在启动时将性能分析数据流式传输到 .raw 文件。对播放器和 Editor 都有效。 |