跳转到内容

7. 组件,给物体装能力

约 22 分钟 难度:新手 动手章

上一章验证过一件事:关掉 Mesh Renderer 物体隐形,拿掉 Collider 玩家穿过去。能力是组件给的,不是物体本身有的。

这章正式看 Component 这套系统。

新建一个 Cube,选中它看 Inspector,会看到四个组件叠在一起:

  1. Transform:位置、旋转、大小。每个物体的标配,删不掉。
  2. Mesh Filter:存几何数据(「我是一个立方体」)。
  3. Mesh Renderer:负责把它画出来(「让我可见」)。
  4. Box Collider:负责物理边界(「踩到我会停」)。

每个组件只管一件事,这是 Unity 的「单一职责」。所以可以只要视觉不要碰撞(天上飘着的装饰云),也可以只要碰撞不要视觉(隐形的空气墙)。

Inspector 底部有一个 Add Component 按钮。点它,搜关键字,就能给物体加上新能力:

  • Light:物体开始发光。
  • Audio Source:能播声音。
  • Rigidbody:获得重力,会下坠和碰撞。
  • Sphere Collider:加一个球形碰撞边界。

不需要一开始就记住上千种组件。只要记住一个直觉:想让物体有某种能力,去 Add Component 搜对应的组件。

VRChat 世界里常用的组件大体就这些:

组件干什么常见场景
Light发光灯具、霓虹、氛围光
Audio Source播声音背景音乐、音效、环境音
Collider(Box / Sphere / Mesh)物理碰撞与点击区域地板、墙壁、按钮
Rigidbody重力与物理模拟可推倒的杯子、可滚的球
Animator平滑运动开关门动画、电梯、风扇
Udon Behaviour自定义交互逻辑开关灯、传送玩家
VRC Pickup可拾取让玩家拿起物品
VRC Object Sync多人位置同步让所有人看到同一个被丢出去的物体

组件挂上后,到 Inspector 里调参数。

比如给一个球加 Light,Inspector 会出现这些:

  • TypePoint 像灯泡向四周散光,Spot 像手电筒打锥形光束,Directional 像太阳平行照亮一切。
  • Color:光的颜色。
  • Intensity:亮度。
  • Range:照射半径。

再比如 Audio Source

  • Audio Clip:放哪个音频文件。
  • Play On Awake:场景加载时是否自动播放。
  • Loop:循环播放(适合背景音和雨声)。
  • Spatial Blend0 = 2D 全场等响,1 = 3D 离远了变小。

没必要背字段表,先看到了再说,常用的那几个反复调一调就熟了。

有些组件参数不是数值字段,而是一个写着 None (Object) 的空槽。

举例:写了一个按钮脚本,脚本上有一个 Target Light 字段。点按钮的时候要控制哪盏灯,脚本不知道,必须把 Hierarchy 里那盏具体的灯拖进这个空槽。这叫显式指定引用。

不要某个组件了,点它右上角的三个点,选 Remove Component

但删之前停一秒,有没有别的逻辑在依赖它?

拿掉 Collider,玩家穿过去,点击交互也失效。拿掉 Mesh Renderer,看不见了,材质和特效都没了。拿掉 Rigidbody,依赖物理的行为全部消失。

不确定后果就先取消勾选(临时禁用)测一下,没问题再删。

Unity 顶部那个三角形按钮是 Play Mode,按下去场景会在编辑器里运行起来。在里面可以随便改参数看效果:灯不够亮拉 Intensity,声音吵就调 Volume,画面立刻响应。

但有一条铁律:退出 Play Mode 后,里面调的所有改动全部还原。

正确的工作流:进 Play Mode 调,找到满意数值后记下来;退出 Play Mode(数值会还原);在正常编辑状态下把数值填回去,按 Ctrl+S 保存。

装上 VRChat SDK 后,工具箱里多了一批 VRC 开头的组件:

  • VRC Pickup:让玩家能拿起物品。
  • VRC Object Sync:多人同步物体位置。
  • VRC Spatial Audio Source:3D 空间音效,离远了变小。
  • VRC Mirror Reflection:生成镜子。
  • VRC Station:让椅子、沙发能坐下。

下一章学 Prefab,配好的物体怎么做成模具,改一处全场同步。