Skip to main content

Class 1 - Intro & Movement


这节课将手把手指导你从零开始配置 Unity 开发环境,并完成第一个 2D 项目的基础设置与角色移动功能实现。适合初次接触 Unity 或希望建立完整开发流程认知的开发者。

素材包下载链接:

https://github.com/1341524165/Game_Design_Courseware

Class 1 Overview

  1. 安装 Unity Hub 与编辑器
  2. 创建 Unity 项目
  3. 理解 Unity 编辑器界面与基本概念
  4. 设置第一个游戏场景与角色贴图
  5. 编写并绑定控制脚本,实现角色移动

1. 安装 Unity Hub 与编辑器

前往 Unity 官网,点击右上角注册账号,获取你的 Unity ID,用于登录 Unity Hub 以及使用云端服务等功能。

下一步是跟着官网的引导下载 Unity Hub. Unity Hub 是 Unity 官方提供的项目管理器与编辑器启动器,你可以在其中:

  • 安装/卸载 Unity 编辑器版本
  • 创建/打开项目
  • 管理插件和模块

接下来,我们需要安装 Unity 编辑器:

  1. 打开 Unity Hub,进入「安装」标签页
  2. 点击「安装编辑器」,选择 正式发行版。为了我们保证我们今后合作开发的稳定性,推荐使用与我一致的版本:
    2022.3.45f1 (LTS)

说明:

  • f1 表示 Final Release
  • LTS 表示官方会对该版本进行长期维护和兼容性保障,便于团队协作

Unity 安装界面
Unity 官网版本选择


以上便是 Unity Hub 和 Unity 编辑器的安装过程。接下来是代码编辑器

个人推荐使用 Visual Studio Code (VS Code):

  • 社区插件丰富,自由度高
  • 由于插件丰富,几乎支持所有编程语言

2. 创建 Unity 项目并导入资源

  1. 打开 Unity Hub → 「项目」 → 新建项目
  2. 选择「2D Core」模板
设置中文界面(可选)

Unity 启动后为英文界面,可回到 Unity Hub:
安装 → 添加模块(Add Module)→ 简体中文

3. 理解 Unity 编辑器界面及基本概念

Unity 编辑器分为多个面板,主要包括下面三个大块:

  • Project:项目资源管理器,显示项目中的所有资源文件
  • Hierarchy:层级管理器,显示当前场景中的所有 GameObject 对象
  • Inspector:属性检查器,显示选中对象的详细属性

Unity UI

首先是Project 面板,显示项目的文件结构。Unity 项目通常包含以下几个重要文件夹:

  • Assets:所有资源的根目录
  • Scenes:存放所有场景文件的文件夹
  • Packages:Unity 内置或导入的插件库(可忽略)

我们可以在 Assets 下新建子文件夹:
Assets/Q1/ 用于存放本节课相关的资源。


将我提供的素材包导入 Q1 文件夹后,选中 ship0,设置如下属性:

  • Pixels Per Unit (PPU) 每单位像素 → 48
  • Compression 压缩 → None(无损压缩)
  • Filter Mode 过滤模式 → Point(无过滤器,马赛克风格像素风推荐)
Sprite

Texture Type 纹理类型属性中,我们会看到 2D 图片的初始类型被设置为 Sprite (2D and UI),这表示该图片将作为 2D 精灵使用。
Sprite 是 2D 游戏中的“精灵对象”,可代表角色、地形、粒子特效等。

Sprite Mode Sprite模式属性
  • Single:单张图片(角色、物体)
  • Multiple:多张图片(图集,Sprite Atlas)
  • Polygon:使用不规则多边形减少透明像素渲染(高级优化),基本只在工业级游戏中使用

4. 设置第一个游戏场景与角色贴图

  1. Assets/Q1/Scenes/ 中重命名当前场景为 Q1.
  2. 层级 下点击鼠标右键 创建空物体
  3. 检查器 添加组件:
    • Sprite Renderer
  4. Sprite 属性中选择我们导入的 ship0 精灵,或是直接将 ship0 精灵拖入 Sprite 属性中,即可显示角色图像
相机 Main Camera 与 Z轴概念

默认场景中已有 Main Camera,它相当于是玩家的视角

  • 在 2D 游戏中,Z 轴用于区分前后层级。Main Camera 的 Z 值通常为 -10,表示它脱离于2D游戏平面之外,以玩家的视角拍摄游戏画面。
  • 如果物体 Z 值错误,可能出现相机拍不到、画面错位等问题

5. 编写并绑定控制脚本,实现角色移动

  1. Assets/Q1/Code/ 中创建脚本 UFOController.cs
  2. 文件名必须与类名一致
  3. 推荐添加命名空间(namespace)进行模块管理
namespace Q1 {
public class UFOController : MonoBehaviour {
void Start() {
// 初始化代码。仅在游戏对象被激活那一瞬间调用一次
}

void Update() {
// 每帧更新逻辑。每帧都会调用,用于控制动画、输入、移动等

// Move Up
if (Input.GetKey(KeyCode.UpArrow)) {
transform.position += new Vector3(0, 0.1f, 0);
}
// Move Down
if (Input.GetKey(KeyCode.DownArrow)) {
transform.position += new Vector3(0, -0.1f, 0);
}
// Move Left
if (Input.GetKey(KeyCode.LeftArrow)) {
transform.position += new Vector3(-0.1f, 0, 0);
}
// Move Right
if (Input.GetKey(KeyCode.RightArrow)) {
transform.position += new Vector3(0.1f, 0, 0);
}
}
}
}
代码重点解释
  1. Input.GetKey(...):监听按键是否按下。括号内接受的参数即为按键代码,如 KeyCode.UpArrow 表示上方向键。
  2. transform.position:在Inspector面板可以找到的 -> Transform组件下的 -> position位置属性,表示物体在世界坐标系中的位置,i.e.他的三维坐标。
  3. new Vector3(x, y, z):创建一个新的三维向量。(注:这里的 new 不是在 new 一个类对象,而是打包一个新的 Vector3 实例.. 可忽略,用多了就记得了)
  4. 不使用 else if 是为了支持多键同时按下

最后补充一下 Unity 编辑器内的操作:

  • 鼠标中键按住并拖动:移动物体/视角
  • Q/W/E/R 键切换工具(查看/移动/旋转/缩放)