__组件__是游戏中对象和行为的基本要素。它们是每个__游戏对象__的功能单元。如果还不了解组件和游戏对象之间的关系,请在继续之前阅读游戏对象页面。
游戏对象是许多不同组件的容器。默认情况下,所有游戏对象都自动拥有__变换__组件。这是因为变换组件可指示游戏对象的位置以及是如何旋转和缩放的。如果没有变换组件,游戏对象将在世界中没有位置。现在请尝试创建一个空游戏对象作为示例。单击 GameObject > Create Empty 菜单项。选择新的游戏对象,然后在 Inspector 窗口中进行查看。
请记住,随时都可以使用 Inspector 查看有哪些组件附加到选定的游戏对象。随着组件的添加和删除,Inspector 将始终显示当前附加的组件。应使用 Inspector 更改所有组件(包括脚本)的所有属性。
可通过 Components 菜单将组件添加到选定的游戏对象。我们现在通过在刚创建的空游戏对象上添加__刚体 (Rigidbody)__ 来尝试该操作。选择该游戏对象,然后从菜单中选择 Component > Physics > Rigidbody。执行此操作时,您将看到刚体的属性出现在 Inspector 中。如果在仍然选中空游戏对象时按 __Play__,您可能会感到有点意外。尝试一下该操作,注意刚体为空游戏对象带来了什么功能。(游戏对象变换组件的 Y 位置开始减小。这是因为 Unity 中的物理引擎使游戏对象在重力作用下坠落。)
另一种选择是使用__组件浏览器 (Component Browser),可以使用对象的 Inspector 中的 Add Component__ 按钮来激活它。
浏览器允许按类别方便地导航组件,还有一个搜索框可用于按名称查找组件。
可以将任意数量的组件或组件的组合附加到单个游戏对象。某些组件与其他组件结合使用效果最佳。例如,刚体可与任何碰撞体 (Collider) 配合使用。刚体通过 NVIDIA PhysX 物理引擎来控制变换组件,而碰撞体允许刚体与其他碰撞体碰撞和交互。
如果想了解有关使用特定组件的更多信息,可以在相关的组件参考页面中了解该组件。还可以通过单击 Inspector 中的组件标题上的小 ? 号来访问 Unity 组件的参考页面。
组件的一个重要优点是灵活性。将组件附加到游戏对象时,组件中有不同的值或 属性__,可以在构建游戏时在 Editor 中对它们进行调整,也可以在运行游戏时通过脚本进行调整。有两种主要类型的属性:__值__和__引用。
请查看下图。该空游戏对象带有一个__音频源 (Audio Source)__ 组件。在 Inspector 中,__Audio Source__ 的所有值都是默认值。
此组件包含一个引用属性和七个值属性。Audio Clip 是引用属性。当此音频源开始播放时,它将尝试播放 Audio Clip 属性中引用的音频文件。如果未进行引用,则会发生错误,因为没有可播放的音频。必须在 Inspector 中引用该文件。这很简单,只需将音频文件从 Project 视图拖动到该引用属性上或使用对象选择器 (Object Selector) 即可。
组件可以包含对任何其他类型的组件、游戏对象或资源的引用。如需了解有关分配引用的更多信息,请参阅关于编辑属性的页面。
Audio Clip 上的其余属性都是值属性。可以在 Inspector 中直接调整这些属性。Audio Clip 上的值属性都是开关、数值、下拉字段,但值属性也可以是文本字符串、颜色、曲线和其他类型。如需了解与此相关的更多信息以及如何编辑值属性,请参阅关于编辑值属性的页面。
组件的上下文菜单包含许多有用的命令。
通过 Inspector 中的组件面板右上角的“齿轮”图标也可以使用相同的命令。
此命令将恢复组件属性在最近编辑会话之前所具有的值。
如果不再需要附加到游戏对象的组件,可使用 Remove Component 命令。请注意,某些组合的组件相互依赖(例如,铰链关节仅在附加了刚体时才起作用);如果尝试删除其他组件依赖的组件,则会显示一条警告消息。
使用 Move Up 和 Move Down 命令可以在 Inspector 中重新排列游戏对象组件的顺序。
Copy Component 命令可存储组件的类型和当前属性设置。然后可以使用 Paste Component Values 将它们粘贴到相同类型的另一个组件中。还可以使用 Paste Component As New 在对象上创建具有复制值的新组件
当游戏处于__播放模式__时,可以在任何游戏对象的 Inspector 中自由更改属性。例如,有时可能希望尝试不同的跳跃高度。如果在脚本中创建了 Jump Height 属性,可以进入播放模式,更改属性的值,然后按 Jump 按钮查看发生的情况。接着,无需退出播放模式,可以再次更改该值,并在几秒钟内即可查看结果。退出播放模式时,属性将恢复为播放模式之前的值,因此不会丢失任何工作。此工作流程提供了测试、调整和优化游戏的强大功能,而无需在迭代周期中投入大量时间。请在播放模式下使用任何属性进行此尝试。我们相信这会给您留下深刻印象。