🐸 青蛙编程网
首页 / C# / Unity 入门 / 2. 场景与 GameObject

场景与 GameObject

这是什么:场景(Scene)、GameObject、Component——Unity 世界观的三件套:戏台、演员和演技。

为什么用:前置知识:Unity 是什么,编辑器已经打开,可满屏的英文面板还是让人发懵。不知道这三样是什么,你连一个方块都挪不明白。

如何用:本章先摆出第一个场景,再把方块拆开看它身上挂了哪些组件,顺便认识一下 Transform。

三个核心概念:舞台、演员、演技

把做游戏想象成排一出戏:

概念 比喻 说明
Scene 场景 舞台 一张地图 / 一个关卡,游戏由一个或多个场景组成
GameObject 演员 场景里的每一个东西:方块、球、灯光、摄像机,全是 GameObject
Component 组件 演技 挂在物体身上的能力:会动、会发光、会被撞……

关键思想:Unity 里没有"模型""灯光""按钮"这些死板分类,只有"空演员 + 一堆技能"。一个方块 = 物体挂上「网格」技能;一盏灯 = 物体挂上「发光」技能。技能(组件)随便加、随便拆,这就是 Unity 搭世界的全部套路。

动手:搭出第一个场景

新建项目后 Hierarchy 里已有 Main Camera(玩家眼睛)和 Directional Light(太阳)。我们再加两个演员:

  1. Hierarchy 空白处右键 → 3D Object → Cube,场景中央出现一个方块
  2. 同样方式再来一个 Sphere(球体),用移动工具把它拖到方块旁边
  3. 选中 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

  1. 在 Project 窗口新建一个文件夹,命名 Prefabs
  2. 把 Hierarchy 里调好的 Cube 拖进 Prefabs 文件夹,它就变成了蓝色的预制体资源
  3. 从 Project 窗口把预制体拖到 Hierarchy 里,就实例化出一个新物体
  4. 选中预制体资源,在 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 管站位——万物皆可挂。

动手改

  1. 把 Sphere 的 Position 调到 (3, 0.5, 0),让它在方块右边落地站好
  2. 新建一个 3D Object → Plane(地板),把 Plane 的 Scale 的 y 改为 0.1,观察变化
  3. 选中 Main Camera,把 Position 改成 (0, 5, -10)、Rotation 的 x 改成 45,切到 Game 视图看看视角变了啥
  4. 把调好的 Cube 拖进 Project 窗口创建 Prefab,再从 Prefab 拖出两个实例,修改 Prefab 颜色,观察两个实例是否同步变色

下一章:用 C# 脚本驱动,让演员真正动起来 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。