1.1 值班室全景:Unity 界面与一帧工作流 本节摘要:Unity 编辑器不是一个"按钮越多越强大"的软件,而是一间分工明确的值班室。本节带你按"一帧工作流"的动线认识 Scene、Game、Hierarchy、Inspector、Project、Console 六大窗口,并用第一次运行体验讲清编辑模式与运行模式的边界——这是所有后续章节的地基。 学习目标 阅读完本节,你应当能够: 说出六大窗口各自的职责,以及它们之间的信息流向; 描述按下 Play 键之后引擎内部发生了哪些交接; 区分编辑模式与运行模式,避免"改了参数一停就丢"的经典事故; 用布局(Layout)功能把工作区固化成自己的值班台。
本节摘要:Unity 编辑器不是一个"按钮越多越强大"的软件,而是一间分工明确的值班室。本节带你按"一帧工作流"的动线认识 Scene、Game、Hierarchy、Inspector、Project、Console 六大窗口,并用第一次运行体验讲清编辑模式与运行模式的边界——这是所有后续章节的地基。
阅读完本节,你应当能够:
打开 Unity,第一眼是七八个面板挤在屏幕上,很多教程的反应是逐个截图讲按钮。换个思路:先问"一帧里数据怎么流",窗口只是这条流的观景窗。
Project 窗口是档案室,直接对应磁盘上的工程目录,所有素材、脚本、预制体都在这里归档。你把一张贴图拖进 Project,等于把一份档案放进柜子,此时它还只是数据,没进入游戏世界。
Hierarchy 窗口是当前场景的花名册,列出场景里每一个游戏对象。Scene 窗口是布景间,你在其中摆位、旋转、缩放,改动会实时同步到花名册。选中任何一个对象,Inspector 就展示它身上挂的所有组件与参数——这是岗位卡,第 1.3 节展开。
按下 Play,Game 窗口接通观众席:摄像机开始工作,物理开始模拟,脚本被点名上班。Console 窗口则持续记录交接日志——报错、警告、脚本打印,排查问题九成靠它。
这条动线可以概括为一句话:档案室备料,布景间搭台,岗位卡调参,观众席验收,日志本记账。
理解编辑器的关键,是分清"编辑模式"与"运行模式"。编辑模式里,场景是一份可以随意涂改的图纸;按下 Play,引擎做一次域重载(Domain Reload),把脚本编译产物装载进运行时,然后用磁盘上那份场景快照启动一场"彩排"。彩排期间你在 Scene 或 Game 里做的一切修改——挪动物体、改血量、调材质颜色——都发生在内存里的副本上;再次按下 Play 停止,副本销毁,图纸回到按下 Play 之前的状态。
新手最常见的崩溃现场就发生在这里:运行中调了半小时参数,觉得手感完美,点停止,全部丢失。值班室的规矩是:运行中的实验属于彩排记录,想保留就抄进笔记本——要么停演后手动改回,要么用脚本在运行时把关键数值打印出来记下。
背景:假设你刚装好 Unity,要验证环境可用,并直观感受一次完整的"值班循环"。
操作:在 Unity Hub 新建一个 3D 核心模板工程,命名为 FirstDuty。打开后,在 Hierarchy 空白处右键,选择创建一个立方体;随后在 Project 窗口新建一个文件夹存放脚本,右键创建 C# 脚本,命名为 DutyLogger,双击用编辑器打开,写入以下内容:
using UnityEngine; public class DutyLogger : MonoBehaviour { // Awake 在对象被创建时立即调用,早于所有 Start void Awake() { Debug.Log("值班员上岗:对象已创建 " + gameObject.name); } // Start 在第一次帧更新前调用,适合做需要引用其他对象的初始化 void Start() { Debug.Log("值班开始,当前位置:" + transform.position); } // Update 每帧调用一次,是值班表上最繁忙的岗位 void Update() { // 每帧打印太吵,这里只在按下空格时汇报一次 if (Input.GetKeyDown(KeyCode.Space)) { Debug.Log("空格键已签收,当前时间戳:" + Time.time); } } }
把脚本文件从 Project 拖到 Hierarchy 里的立方体上(或选中立方体后在 Inspector 点 Add Script),然后按 Play。
结果:Console 窗口立刻出现两行日志——"值班员上岗"与"值班开始"。运行期间每按一次空格,就多一行带时间戳的记录。按停止,日志保留(Console 的记录不会被清掉),场景回到编辑状态。
解读:这三行日志对应了值班表上的三个时点:Awake 证明对象创建即触发,Start 证明首帧前触发,Update 证明逐帧轮询。时间戳来自 Time.time,它不是墙上时钟,而是"游戏开演以来的累计秒数"——值班室用的是节目时间。还有一个细节:如果你在 Awake 里打印了两次(比如物体被复制),说明对象在场景加载时就被实例化了,这是后面排查"为什么初始化跑了两次"类问题的第一块拼图。
变式:把日志代码改成在 OnDisable 里打印,然后运行中在 Inspector 取消勾选脚本组件右上角的开关,观察日志——你会看到"下班"记录。组件级启用与禁用是 Unity 控制值班员在岗状态的第一层开关,比销毁对象轻量得多。
窗口布局可以拖拽调整,调好后通过 Layout 下拉菜单保存为自己的布局。个人建议保留六个窗口,把 Scene 放中央、Game 缩小挂角落——因为开发时八成时间在看 Scene,只有验收时才切 Game。若不小心关掉某个窗口,从 Window 菜单可以随时找回;布局乱了就 Reset 回默认,不值得手动一个个拖回去。
还有两个不起眼但天天在用的编辑器习惯值得在第一天养成。其一是暂停键与逐帧键:Play 旁边的第二步进按钮可以逐帧推进游戏,配合协程与物理调试,相当于给值班室装了慢放键;其二是 Gizmos 开关:Scene 视图里可以控制各类辅助线的显示,碰撞体轮廓、光源范围、音频探测范围都靠它可视化,排查"为什么撞不到"这类问题时,开着 Gizmos 看一眼碰撞体形状,胜过十分钟空想。
下一节进入值班室的建筑本体:场景与游戏对象。你会看到花名册上那一行行条目,到底在引擎里代表什么。