# 编辑属性

> Edit reference and value properties of GameObject components and assets in the Inspector window.

属性是用于游戏对象组件和资源的设置和选项。可在 [Inspector 窗口](/engine/6000.0/manual/unity-editor/using-the-editor/using-the-inspector.md)中编辑属性。


**光源组件显示了各种值和引用属性:**
![](/api/media?file=/engine/6000.0/media/images/PropertiesExample.png)

属性分为以下主要类别：

* \*\*引用：\*\*到其他游戏对象和资源的链接。
* \*\*值：\*\*数字、颜色、开/关设置、文本等。

## 参考

引用属性将场景中的兼容项目资源或游戏对象作为输入。例如，[网格过滤器 (Mesh Filter)](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/mesh/components-reference/class-mesh-filter.md) 组件需要在项目中某处引用[网格 (Mesh)](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/mesh/components-reference/class.md)资源。

创建组件时未分配引用属性。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/RefPropUnassigned.png)

可通过将对象和资源[拖放](#ref-assign-dnd)到引用属性字段，或是使用 [Object Picker 窗口](#ref-assign-objectpicker)。

某些引用属性接受特定类型的组件（例如[变换 (Transform) ](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/gameobject-fundamentals/class-transform.md)组件）。将游戏对象分配给这些属性时，Unity 会在游戏对象上找到所需类型的第一个组件，并将它分配给引用属性。如果游戏对象没有任何符合类型要求的组件，就无法将该游戏对象分配给相应属性。

### 通过拖放分配引用

要将引用分配给属性，请将兼容游戏对象或资源拖放到 Inspector 中的属性字段上。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-refprop-dragdrop.png)

### 使用 Object Picker 窗口分配引用

使用 Object Picker 窗口查找并选择要分配的引用对象。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-refprop-picker.png)

1. 点击检视面板 (Inspector) 中属性右侧的小圆圈图标，以打开 Object Picker 窗口。
2. 找到要引用的对象或资源，然后双击以将它分配给属性。

## 值

可以使用简单控件编辑大多数值属性。例如：

**字段** 可以在其中输入文本和数值。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-numeric.png)

可以直接在属性字段中键入数值，或单击并拖动属性标签以增大或减小值。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-numeric-drag.png)

某些属性还具有用于调整数值的**滑动条**。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-slider.png)

**复选框** 可以在其中打开和关闭属性。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-checkbox.png)

**下拉列表**和**弹出窗口** 可以在其中选择多个可能值之一。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-popup.png)

### 数值字段表达式

数值字段输入控件也接受数学表达式，例如，在字段中输入 `2+3` 将得到值 `5`。请参阅 [ExpressionEvaluator](/engine/6000.0/script-reference/unity-engine/expression-evaluator.md) C# 类文档以了解哪些表达式受支持的详细信息。

数值字段还支持在一次编辑多个选定对象时很有用的特殊函数：

* `L(a,b)` 会导致 `a` 和 `b` 之间的线性渐变。


  **Frame:**
  ![](/api/media?file=/engine/6000.0/media/images/inspector-expr-L.png)

  *在 X 坐标中输入 `L(-6,6)` 会使十个选定的胶囊体分布在 -6 和 6 之间。*
* `R(a,b)` 会产生 `a` 和 `b` 之间的随机值。


  **Frame:**
  ![](/api/media?file=/engine/6000.0/media/images/inspector-expr-R.png)

  *在 Z 坐标中输入 `R(-2,2)` 会将所选胶囊体的 Z 坐标设置为 -2 到 2 之间的随机值。*
* `+=`、`-=`、`*=`、`/=` 表达式可用于修改当前值，例如，输入 `*=2` 会使所有字段值变为原来的两倍。


  **Frame:**
  ![](/api/media?file=/engine/6000.0/media/images/inspector-expr-assign.png)

  *在 Z 坐标中输入 `/=3` 会使所有 Z 坐标变为原来的三分之一。*

您可以组合使用数学表达式。例如，可以使用表达式 `L(0,2*pi)` 作为三角函数的参数，该表达式能生成介于 0 到 2π 弧度之间的线性分布值。为为了说明这一点，下面的示例将这个线性渐变函数用作正弦和余弦函数的参数，以便将一组选定的对象分布在一个圆周上：


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-expr-trig.png)

*将 `cos(L(0,2*pi))*5` 输入 X 坐标并将 `sin(L(0,2*pi))*5` 输入 Z 坐标，会把十个已选中的胶囊体放置在一个圆周上。*

编写[自定义检视面板 ](/engine/6000.0/manual/working-in-unity/uitoolkits/guiscripting-guide/extending-the-editor/editor-custom-editors.md)时，所有 [EditorGUI.PropertyField](/engine/6000.0/script-reference/unity-editor/editor-gui/property-field.md) 和 [EditorGUILayout.PropertyField](/engine/6000.0/script-reference/unity-editor/editor-gui-layout/property-field.md) 控件都会自动支持数值表达式。

某些游戏对象和资源的属性较为复杂，可使用专门控件或专用编辑器进行编辑。本节其余部分介绍如何设置这些复杂属性。

**注意**：Constrain Proportions Scale 在多重选择下不支持数学表达式。

### 颜色值

Inspector 窗口将颜色属性显示为样本。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-color.png)

点击任何样本可打开拾色器或 HDR 拾色器（具体取决于上下文）。例如，在[标准着色器](/engine/6000.0/manual/materials-and-shaders/shaders/shader-built-in-birp/birp/shader-standard-shader/shader.md)中编辑**发射**颜色属性时，Unity 会显示 HDR 拾色器窗口。


**Unity 拾色器窗口（左）和 HDR 拾色器（右）:**
![](/api/media?file=/engine/6000.0/media/images/color-pickers.png)

还可以使用吸管工具从屏幕上的任何位置选取颜色值。


**Frame:**
![](/api/media?file=/engine/6000.0/media/images/inspector-property-color-eyedropper.png)

要选取颜色，请点击颜色属性旁的吸管按钮，然后点击屏幕上的任何位置。Unity 会将颜色属性设置为点击的像素的颜色。

可以将设置的颜色保存在可以在项目之间共享的可重用[样本库](#swatch-libraries)中。

### 渐变值

渐变是颜色渐进的视觉呈现。它们可用于在空间或时间上将一种颜色逐渐混合到另一种颜色中。

在 Unity 中，[粒子系统](/engine/6000.0/manual/visual-effects/particle-systems/particle-system-modules/part-sys-color-over-life-module.md)、[线渲染器](/engine/6000.0/manual/visual-effects/lines-trails-billboards/rendering-lines/class-line-renderer.md)和其他一些组件会使用渐变值。还可以在 C# 脚本中包含公共 [Gradient 类](/engine/6000.0/script-reference/unity-engine/gradient.md)变量，而检视面板 (Inspector) 将为它们显示渐变编辑器。


**粒子系统渐变编辑器:**
![](/api/media?file=/engine/6000.0/media/images/inspector-gradient-editor.png)

专用渐变编辑器在渐变条中显示主要颜色（称为\_关键点\_）以及它们之间的所有中间色 (1)。

沿着渐变条底部的向上箭头表示颜色关键点 (2)。

* 通过点击选定关键点。Unity 将其颜色值显示在 **Color 字段**中。

  * 点击颜色样本 (3) 可使用标准[拾色器](#color-values)编辑颜色。
  * 还可以使用吸管工具 (4) 从屏幕上的任何位置选取颜色值。点击吸管按钮，然后单击屏幕上的任何位置。Unity 会将颜色属性设置为点击的像素的颜色。

* 点击渐变条下方的空白区域可添加关键点。

* 点击并拖动关键点可进行移动。

* 要删除关键点，请选择它并使用 **Ctrl/Cmd + Delete** 快捷方式。

渐变条上方的向下箭头表示控制给定点处渐变透明度的 alpha 关键点 (5)。可以采用与编辑颜色关键点相同的方式添加和编辑 alpha 关键点。选择 alpha 关键点时，渐变编辑器会显示 **Alpha** 滑动条而不是 **Color** 字段。

默认情况下，渐变具有两个设置为 100% alpha（这使得渐变完全不透明）的关键点。可以编辑关键点以调整透明度，并根据需要添加其他关键点。

渐变可以使用几种不同的颜色插值模式：

* \_混合\_模式在颜色键之间进行线性插值。
* \_混合（感知）\_模式使用感知上均匀的“[Oklab](https://bottosson.github.io/posts/oklab/)”颜色空间在颜色键之间进行插值。
* \_固定\_模式不会对颜色进行插值；颜色或 Alpha 键的值将一直使用到下一个键。


**混合渐变模式:**
![](/api/media?file=/engine/6000.0/media/images/GradientEditorModeBlend.png)


**感知混合渐变模式:**
![](/api/media?file=/engine/6000.0/media/images/GradientEditorModePerceptual.png)


**固定渐变模式:**
![](/api/media?file=/engine/6000.0/media/images/GradientEditorModeFixed.png)

### 曲线

\_\_曲线\_\_是线形图，显示对输入变化值（在 X 轴上）的响应（在 Y 轴上）。


**Animation 窗口中的曲线编辑器:**
![](/api/media?file=/engine/6000.0/media/images/CurveEditor.png)

Unity 在各种不同的上下文中使用曲线，尤其是在动画中。曲线编辑器有许多不同的选项和工具。详细信息，请参阅 [编辑曲线](/engine/6000.0/manual/animation-section/animation-overview/animation-clips/animation-editor-guide/editing-curves.md)。

### 条形滑动条

条形滑动条是一种专门控件，用于以可视化方式分配特定资源。例如，[LOD Group 组件](/engine/6000.0/manual/working-in-unity/working-with-gameobjects/mesh/simplifying-distant-meshes-with-level-of-detail-lod/class-lodgroup.md)使用条形滑动条定义游戏对象 LOD 级别之间的过渡。


**LOD Group 选择栏是一种条形滑动控件:**
![](/api/media?file=/engine/6000.0/media/images/LODGroup-SpeedTreeModels.png)

可通过拖动线段边缘来调整每个线段在选择条中的相对值。一些条形滑动条还具备可拖动的手柄。

### 数组

脚本将数组公开为公共变量时，检视面板 (Inspector) 会显示一个控件，可用于编辑数组中的项数 (**Size**) 以及其中的值或引用。


**具有 Vector3 数组属性的脚本:**
![](/api/media?file=/engine/6000.0/media/images/ArrayInspector.png)

减小 **Size** 值时，Unity 会从数组末尾移除值。增大 **Size** 值时，Unity 会将当前的最后一个值复制到添加的所有新元素中。

| 提示：                                     |
| --------------------------------------- |
| 要设置值基本相同的数组，请添加第一个元素，然后更改大小以将其值复制到后续元素。 |

## 创建样本库

使用样本库可重用、保存和共享颜色、渐变和动画曲线。可在[拾色器 (Color Picker)](#color-values)、[渐变编辑器 (Gradient Editor)](#gradient-values) 和[曲线编辑器 (Curve Editor)](#curves) 中保存和选择样本。


**Unity 拾色器中的 Swatches 部分:**
![](/api/media?file=/engine/6000.0/media/images/PresetLibrary.png)

样本库是保存在文件中的样本集合。Swatches 部分一次显示一个样本库。

要保存样本，请执行以下操作：

1. 打开拾色器、渐变编辑器或曲线编辑器。例如，在 [Hierarchy](/engine/6000.0/manual/unity-editor/using-the-editor/hierarchy.md) 窗口中选择 **Main Camera**。
2. 在 [Inspector](/engine/6000.0/manual/unity-editor/using-the-editor/using-the-inspector.md) 窗口中，点击 **Background Color**。
3. 在拾色器窗口中，根据喜好调整颜色、渐变或曲线。
4. 在 **Swatches** 中，点击轮廓框。
5. 如果视图处于 List 模式，则可以选择输入样本的名称。


**在 Grid 视图中保存颜色的示例:**
![](/api/media?file=/engine/6000.0/media/images/SwatchSaving.png)

拖放样本可更改其顺序。右键单击样本可将其移动到顶部、对进行替换、重命名或删除。也可以通过按住 Alt/Option 并单击样本来将其删除。

使用 **Swatches** 中的下拉菜单：

* 选择 **List** 或 **Grid** 来更改视图。List 视图还显示样本的名称。
* 选择一个样本库。
* 选择 **Create a Library** 可创建新的样本库以及保存该样本库的位置。
* 选择 **Reveal Current Library Location** 可在 Windows 资源管理器/Mac OS Finder 中查看当前库。

默认情况下，Unity 将样本库保存在用户偏好设置中。也可以在项目中保存样本库。Unity 将项目样本库保存在 *Assets* 文件夹的 *Editor* 文件夹中。要在用户之间共享项目样本库，或将样本库包含在资源包中，请将它们添加到修订控制存储库中。

要编辑项目样本库，请执行以下操作：

1. 在 [Project](/engine/6000.0/manual/unity-editor/using-the-editor/project-view.md) 窗口中选择样本库。
2. 在 [Inspector](/engine/6000.0/manual/unity-editor/using-the-editor/using-the-inspector.md) 窗口中，点击 **Edit**。

***

*
