Unity 游戏开发入门:编辑器与 C# 脚本

FreeGuideOnline 最新 2026-06-17

初识 Unity 编辑器

Unity 编辑器是创建游戏的核心工作区,它采用模块化布局,所有功能窗口都可以自由拖拽和停靠。刚启动时,默认布局包含五大核心面板:

  • 场景视图 (Scene View):用于可视化构建和布置游戏世界,你可以像操作 3D 建模软件一样移动、旋转、缩放物体。
  • 游戏视图 (Game View):模拟最终游戏画面的窗口,通过挂载的摄像机进行渲染。只有点击顶部中间的“播放”按钮后,这里才会实时显示游戏运行效果。
  • 层级窗口 (Hierarchy):以树状结构列出当前场景中的所有游戏对象。可以直接在这里拖拽改变父子关系,或右键快速创建基础对象。
  • 项目窗口 (Project):相当于资源管理器,存放所有图片、模型、材质、脚本等资产。通常会将资源按文件夹分类(如 Scripts、Textures、Models、Scenes),便于管理。
  • 检视窗口 (Inspector):这是最重要的面板之一。选中任意游戏对象或资源后,这里会显示其所有组件属性和设置。挂载脚本、调整物理参数、修改颜色等操作都在此进行。

管理布局

如果不慎将窗口关掉或弄乱,可以通过顶部菜单 Window > Layouts 选择预设布局(如“Default”)或保存自己的自定义布局。熟练切换 SceneGame 视图是开发的基础操作。

创建第一个项目与场景

启动 Unity Hub,点击“新建项目”,选择 3D Core 模板(同样适用于 2D 游戏,稍后可在编辑器中切换),设定项目名称与存储位置后创建。项目打开后,首要任务是保存场景:File > Save As,将场景命名为 MainScene 并存入 Scenes 文件夹。

构建简单世界

  1. 添加地面:在 Hierarchy 窗口右键,选择 3D Object > Plane,将其重命名为 Ground。为了视觉参考,我们可以创建一个材质:在 Project 窗口右键 Create > Material,命名为 GroundMat,在 Inspector 中调整其颜色,然后将材质拖拽到 Ground 上。
  2. 放置玩家对象:同样通过右键 3D Object > Capsule 创建一个胶囊体代表玩家,命名为 Player,将其 Position 的 Y 值设为 1,使之站立在地面上。为了让摄像机跟随它,将 Main Camera 拖拽成为 Player 的子物体,然后调整摄像机的相对位置(比如 0, 2, -5)。
  3. 添加光源:通常场景自带定向光 Directional Light,类似太阳光。如果删除,可以重新创建:右键 Light > Directional Light,并调整其旋转角度来改变光照方向。

理解游戏对象与组件

Unity 遵循 实体-组件 架构。每个存在于场景中的物体都是“游戏对象 (GameObject)”,其本身只是一个空的容器,真正的行为由挂载的 组件 (Component) 提供。例如,一个 Cube 自动带有 Transform(位置、旋转、缩放)和 Mesh Filter/Renderer(显示形状)组件;添加 Rigidbody 组件会赋予物理属性,添加 Audio Source 则会播放声音。在 Inspector 中可以随时添加或移除组件,也可以将脚本(一种自定义组件)拖放到对象上。

C# 脚本入门:赋予物体生命

脚本是游戏的核心逻辑载体,Unity 使用 C# 语言。所有脚本都要继承自 MonoBehaviour,这是 Unity 提供的基础类,负责与游戏引擎通信。

创建与挂载脚本

在 Project 窗口右键 Create > C# Script,命名为 PlayerController,双击打开(推荐使用 Visual Studio 或通过 Unity Hub 安装的默认编辑器)。生成的模板包含两个关键方法:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Start 在游戏对象激活后的第一帧之前调用一次
    void Start()
    {
        
    }

    // Update 每帧调用一次,大部分持续逻辑写在这里
    void Update()
    {
        
    }
}

编写完成后保存,将脚本文件从 Project 窗口直接拖到 Hierarchy 中的 Player 对象上,即可让该脚本成为 Player 的一个组件。此时 Player 就具备了脚本定义的行为。

实现移动控制

以下脚本展示了如何通过键盘输入控制胶囊体移动,内嵌详细注释:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // 公共变量会暴露在 Inspector 面板中,便于调整
    public float speed = 5f;        // 移动速度
    private Rigidbody rb;          // 物理体引用

    void Start()
    {
        // 获取当前物体上的 Rigidbody 组件
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // 获取水平与垂直输入,返回 -1 到 1 之间的值
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        
        // 根据摄像机朝向计算移动方向,这里简单使用世界坐标
        Vector3 movement = new Vector3(horizontal, 0f, vertical).normalized;
        
        // 直接设置速度实现物理移动
        Vector3 velocity = movement * speed;
        // 保持原有的垂直速度(如重力影响),仅修改平面速度
        rb.linearVelocity = new Vector3(velocity.x, rb.linearVelocity.y, velocity.z);
    }
}

挂载此脚本到 Player 并确保该对象有 Rigidbody 组件(通过 Inspector 添加),点击播放按钮后,即可用 W、A、S、D 或方向键控制移动。

常用事件方法简介

Start()Update() 外,MonoBehaviour 还提供许多生命周期方法,按需选用:

  • Awake():在对象实例化时调用,比 Start() 更早,适合组件引用初始化。
  • FixedUpdate():固定时间间隔调用(默认 0.02 秒),用于物理相关计算(如修改 Rigidbody)。
  • LateUpdate():所有 Update() 执行完毕后调用,常用于摄像机跟随。
  • OnCollisionEnter() / OnTriggerEnter():处理物理碰撞与触发检测。

调试与 Play Mode 快速迭代

点击编辑器顶部的 播放按钮 进入 Play Mode,场景开始运行,可以在 Scene 视图中实时观察物体变化,同时在 Inspector 中查看并动态修改变量值(比如调整 speed)。注意:在 Play Mode 下对场景所做的任何修改,一旦退出播放模式都会被重置,避免意外损失。因此通常只在 Play Mode 中测试临时数值,想永久保存需先停止播放再修改或通过脚本序列化。

Console 窗口(Window > General > Console)是调试利器。在脚本中使用 Debug.Log("信息") 可以输出消息,双击错误信息可直接定位到代码行。

保存与构建

完成基本功能后,记得保存场景(Ctrl+S)和整个项目。若想打包成可执行程序,通过 File > Build Settings,添加要构建的场景,选择目标平台(PC, Mac & Linux Standalone),点击“Build”生成 .exe 或相应文件。首次构建需安装对应平台的 Build Support,可通过 Unity Hub 添加模块。

下一步学习

  • 预制体 (Prefab):保存游戏对象模板,可在多个场景复用并统一修改。
  • 动画系统:使用 Animation 和 Animator Controller 制作角色动画。
  • UI 系统:创建血条、按钮、文本等用户界面。
  • 资源商店 (Asset Store):获取免费或付费模型、音效、插件,加速开发。

通过掌握编辑器布局、游戏对象与组件的关系以及基础 C# 脚本,你已经迈出了 Unity 游戏开发最关键的第一步。不断动手实践并查阅官方文档,很快你就能制作出完整的游戏作品。