场景与 GameObject
这是什么:场景(Scene)、GameObject、Component——Unity 世界观的三件套:戏台、演员和演技。
为什么用:前置知识:Unity 是什么,编辑器已经打开,可满屏的英文面板还是让人发懵。不知道这三样是什么,你连一个方块都挪不明白。
如何用:本章先摆出第一个场景,再把方块拆开看它身上挂了哪些组件,顺便认识一下 Transform。
三个核心概念:舞台、演员、演技
把做游戏想象成排一出戏:
| 概念 | 比喻 | 说明 |
|---|---|---|
| Scene 场景 | 舞台 | 一张地图 / 一个关卡,游戏由一个或多个场景组成 |
| GameObject | 演员 | 场景里的每一个东西:方块、球、灯光、摄像机,全是 GameObject |
| Component 组件 | 演技 | 挂在物体身上的能力:会动、会发光、会被撞…… |
关键思想:Unity 里没有"模型""灯光""按钮"这些死板分类,只有"空演员 + 一堆技能"。一个方块 = 物体挂上「网格」技能;一盏灯 = 物体挂上「发光」技能。技能(组件)随便加、随便拆,这就是 Unity 搭世界的全部套路。
动手:搭出第一个场景
新建项目后 Hierarchy 里已有 Main Camera(玩家眼睛)和 Directional Light(太阳)。我们再加两个演员:
- Hierarchy 空白处右键 →
3D Object→Cube,场景中央出现一个方块 - 同样方式再来一个
Sphere(球体),用移动工具把它拖到方块旁边 - 选中 Cube,看右侧 Inspector:它身上列出了所有组件
| Inspector 里的组件 | 作用 |
|---|---|
Mesh Filter |
提供方块的形状(网格数据) |
Mesh Renderer |
把形状画出来(负责渲染) |
Box Collider |
让它能参与碰撞检测 |
看到了吗?一个"方块"其实是空物体 + 三个组件叠出来的。顺带说一句:Camera 和 Light 也是 GameObject,只是挂的组件不同——万物皆演员。
Transform:物体的"身份证"
每个 GameObject 都强制带一个 Transform 组件,管它的三围:
| 属性 | 含义 | 试一试 |
|---|---|---|
| Position 位置 | 在世界坐标 (x, y, z) 的哪一点 | 改成 (0, 3, 0),方块飞上天 |
| Rotation 旋转 | 绕三个轴各转多少度 | y 改成 45,方块转身 |
| Scale 缩放 | 三方向拉伸倍数 | 全改成 2,方块变大一倍 |
也可以直接在 Scene 视图左侧那排工具(移动 / 旋转 / 缩放,快捷键 W / E / R)拖着玩,改完记得 Ctrl + S 保存场景。
Prefab:预制体,"复制粘贴"的升级版
如果你要在场景里放 10 个一模一样的敌方小球,一个个手动调参数太麻烦。Prefab(预制体) 解决这个问题:把调好的物体变成"模板",以后拖多少个都一样,改模板一次,所有实例都跟着变。
创建并使用 Prefab
- 在 Project 窗口新建一个文件夹,命名
Prefabs - 把 Hierarchy 里调好的 Cube 拖进
Prefabs文件夹,它就变成了蓝色的预制体资源 - 从 Project 窗口把预制体拖到 Hierarchy 里,就实例化出一个新物体
- 选中预制体资源,在 Inspector 里改它的参数(比如颜色),所有已经放进场景的实例都会同步更新
Prefab 是 Unity 里"批量生产"的核心,后面做金币、敌人、子弹时都会大量用到。
记忆口诀
场景是舞台,物体是演员,组件是演技,Transform 管站位——万物皆可挂。
❓ 常见问题
Q1:GameObject 能没有组件吗?
不能。每个 GameObject 至少带一个 Transform 组件(管位置旋转缩放),这是强制的。
Q2:删除 GameObject,挂在上面的组件会怎样?
连同一起被删除。组件依附于物体,物体没了,组件自然也没了。
Q3:Prefab 和普通复制粘贴有什么区别?
普通复制粘贴出来的物体互相独立,改一个不影响另一个;Prefab 的所有实例共享模板,改模板所有实例都变。需要"一改全改"时用 Prefab。
⚠️ 新手翻车现场
翻车一:在 Scene 里移动物体,运行后位置又变回去了
可能是你在运行模式下(点 ▶ 后)手动拖动了物体。Unity 运行时的修改不会保存,停止运行后会恢复。
修正:先点 ▶ 停止运行,再在编辑模式下调整位置,然后 Ctrl + S 保存。
翻车二:Inspector 里看不到自己挂的脚本
脚本可能有编译错误,或者没保存。查看 Console 窗口(Window → General → Console),修复报错后等待 Unity 自动重新编译。
修正:双击脚本打开编辑器,保存文件,回到 Unity 等待编译完成。
翻车三:Prefab 蓝色图标但拖不进场景
确保你拖的是 Project 窗口里的预制体资源(蓝色图标),而不是 Hierarchy 里的实例。
🎯 什么时候用 Prefab
- 需要场景里出现多个完全一样的物体(金币、敌人、子弹、墙砖)
- 想统一修改多个物体的参数(比如把所有敌人的血量从 100 改成 150)
- 想在运行时动态生成物体(用
Instantiate生成预制体实例)
📝 本章小结
- Scene 是舞台,GameObject 是演员,Component 是演技
- 每个 GameObject 都强制带 Transform 组件(位置、旋转、缩放)
- Inspector 里能看到并编辑选中物体的所有组件
- Prefab 是物体模板,改模板所有实例同步,适合批量生产
- W/E/R 分别是移动/旋转/缩放工具,
Ctrl + S保存场景 - 记忆口诀:场景是舞台,物体是演员,组件是演技,Transform 管站位——万物皆可挂。
动手改
- 把 Sphere 的 Position 调到
(3, 0.5, 0),让它在方块右边落地站好 - 新建一个
3D Object → Plane(地板),把 Plane 的 Scale 的 y 改为 0.1,观察变化 - 选中 Main Camera,把 Position 改成
(0, 5, -10)、Rotation 的 x 改成 45,切到 Game 视图看看视角变了啥 - 把调好的 Cube 拖进 Project 窗口创建 Prefab,再从 Prefab 拖出两个实例,修改 Prefab 颜色,观察两个实例是否同步变色
下一章:用 C# 脚本驱动,让演员真正动起来 🐸