【Unity2D系列】【1】启蒙与准备,认识你的新画笔!

好的,请看系列第一篇。


整个系列:https://blog.youkuaiyun.com/duckerduck/category_13041643.html

Unity 2D 从零精通:第一阶段 - 启蒙与准备,认识你的新画笔

引言:欢迎来到创造者的世界

欢迎你,未来的游戏开发者!当你决定踏上这条旅程时,你手中已经握有了最强大的工具——想象力。而Unity,将是帮你将想象力变为现实的那支神奇画笔。本系列文章将作为你最可靠的指南,从最微小的像素开始,直至你能够 confidently 构建出令人惊叹的2D世界。

这第一篇,是我们的基石。它将不会涉及复杂的代码或令人眼花缭乱的特效,而是专注于最重要的事:与Unity编辑器成为朋友。正如画家必须熟悉他的画布、颜料和画笔一样,你必须对你即将日夜相伴的开发环境了如指掌。磨刀不误砍柴工,扎实的基础会让你未来的学习之路事半功倍,避免无数令人沮丧的“坑”。

我们将从安装开始,一步步探索Unity编辑器的核心界面,理解其最基本又最重要的概念,并最终亲手创建一个简单但“活”起来的2D小场景。我们的目标是:不仅知道怎么操作,更理解为什么这样操作。

第一章:万事开头——安装与项目创建
1.1 获取并安装Unity Hub

Unity的生态系统由一个叫做 Unity Hub 的中心化管理工具开始。它是你管理不同Unity版本、创建和打开项目、下载学习资源的大门。

  1. 访问官方网站:前往Unity官网(https://unity.com/)找到“下载”或“Get Started”按钮。通常官网会自动推荐下载Unity Hub。
  2. 选择个人版:Unity对个人和小型团队提供免费版本,只要你的资金或年度收入不超过10万美元,就可以放心使用Unity Personal
  3. 安装与登录:下载完成后,运行安装程序。安装完毕后打开Unity Hub,你需要使用一个Unity ID登录(如果没有,请免费注册一个)。这个账号非常重要,用于同步你的偏好设置、访问云服务等。

注意:对于国内用户,你也可以选择下载中国版Unity Hub,它在网络连接和下载速度上可能会有优化,但核心功能与国际版一致。

1.2 安装Unity编辑器版本

登录Hub后,转到“安装”标签页,点击“安装编辑器”。

  1. 版本选择强烈建议选择最新的长期支持版本(LTS - Long Term Support)。例如,截至撰写本文时,2022.3 LTS 是一个极佳的选择。LTS版本经过最全面的测试,非常稳定,拥有最完善的社区支持,非常适合学习和商业开发,能避免最新技术预览版可能带来的各种奇怪问题。
  2. 模块选择:在安装时,你会看到一个模块选择列表。对于纯2D开发,最基本的需求是:
    • Microsoft Visual Studio Community:这是Unity默认的代码编辑器(IDE),用于编写C#脚本。务必勾选。
    • WebGL Build Support:如果你希望将来将游戏发布到网页上。
    • Android/iOS Build Support:如果你希望将来发布到移动设备。
      其他模块可以暂时不安装,日后有需要可以随时通过Hub添加。
1.3 创建你的第一个项目

安装好编辑器后,在Hub的“项目”标签页中,点击“新建项目”。

  1. 模板选择至关重要的一步! 请确保选择 2D 模板,而不是3DURP。选择2D模板意味着Unity会为你预先配置好适合2D开发的环境(例如,摄像机设置为正交模式,导入设置针对Sprite优化等)。
  2. 项目命名与路径:给你的项目起一个有意义的名字,例如MyFirst2DWorld。为项目选择一个路径简单、没有中文和特殊符号的文件夹(例如D:\UnityProjects\)。使用中文路径是导致各种未知错误的常见原因之一,务必避免!
  3. 点击创建:点击“创建项目”按钮,耐心等待Unity初始化你的新世界。
第二章:初窥门径——认识Unity编辑器界面

当Unity编辑器首次打开时,你可能会感到有些不知所措。别担心,我们将一个部分一个部分地拆解它。一个标准的布局通常包含以下窗口:

2.1 场景视图(Scene View) - 你的沙盒

这是你构建游戏世界的核心区域,是你的数字沙盒。在这里,你可以放置、移动、旋转和缩放游戏中的对象,直观地搭建你的关卡和场景。

  • 导航操作(必须肌肉记忆):
    • 移动视口:按住鼠标中键并拖动。
    • 缩放视口:滚动鼠标滚轮
    • 旋转视口:按住Alt键 + 鼠标左键并拖动。(在2D模式下较少使用)
    • 平移视口:按住Alt键 + 鼠标中键并拖动。
  • 2D模式按钮:在Scene视图的左上角,有一个名为“2D”的按钮。确保它处于按下状态。这会强制将视角锁定在2D的X/Y轴上,使所有操作都像是在一个平面上进行,防止误操作导致视角歪斜。
2.2 游戏视图(Game View) - 玩家的屏幕

这是从游戏主摄像机所看到的画面,也就是玩家最终会看到的游戏内容。你可以把它理解为“预览窗口”。点击顶部的“播放”按钮(三角形)后,游戏视图将成为焦点,你可以在其中测试游戏逻辑。

2.3 层级窗口(Hierarchy Window) - 世界的清单

这里列出了当前场景(Scene)中存在的每一个游戏对象(GameObject)。它可以被理解为你场景的“目录”或“清单”。

  • 你创建、删除或选择的对象都会在这里显示。
  • 对象之间可以存在父子关系。将一个对象拖到另一个对象上,即可建立父子关系。子对象会继承父对象的移动、旋转和缩放。这是组织复杂场景(如将一个角色的所有部件组成一个整体)的基石概念。
2.4 项目窗口(Project Window) - 你的资源库

这里显示了你项目Assets文件夹下的所有内容,是你所有游戏资源(称为“资产”)的大本营:图片、声音、脚本、预制体、场景文件等都存放在这里。

  • 它直接对应你项目文件夹在磁盘上的结构。强烈建议在这里建立良好的文件夹结构来管理你的资产(例如:Scripts, Sprites, Prefabs, Scenes, Audio等)。
2.5 检视窗口(Inspector Window) - 对象的属性面板

这是你与游戏对象“对话”的地方。当你选中 Hierarchy 或 Scene 视图中的任何一个对象时,Inspector 窗口会显示该对象的所有详细信息。

  • 组件(Component):Inspector 中显示的内容,本质上是一个个组件。这是Unity架构的核心!
  • 每个游戏对象默认都有一个Transform(变换) 组件。它决定了对象在场景中的Position(位置)Rotation(旋转)Scale(缩放)
  • 你可以通过点击下方的“Add Component”按钮,为对象添加各种功能组件,如物理效果、渲染 sprite、播放声音等。在Unity中,一切都是游戏对象,而对象的功能由附加的组件决定。
2.6 工具栏(Toolbar) - 你的常用工具

位于最顶部,包含最常用的工具。

  • 变换工具:用于在Scene视图中操作对象的手柄(移动、旋转、缩放、矩形变换等)。
  • 播放/暂停/逐帧按钮:用于测试游戏。
  • 账户、服务、图层、布局下拉菜单:用于管理账号、云服务、对象图层和编辑器界面布局(你可以自定义并保存自己喜欢的布局)。
第三章:核心概念——游戏对象与组件

这是Unity中最重要、最必须理解的概念。让我们用一个类比来彻底搞懂它。

想象你要在舞台上拍一部话剧:

  • 游戏对象(GameObject):就像是舞台上的一个空演员。他本身看不见摸不着,没有特定功能。他可以扮演英雄,也可以扮演一棵树。这个“空演员”就是GameObject,它是所有事物的容器
  • 组件(Component):就像是给这个空演员穿上的戏服和道具,以及给他的指令
    • 给他穿上英雄的衣服(Sprite Renderer组件),观众就能看到他是一个英雄。
    • 给他一把剑(模型),他手里就有了剑。
    • 给他一份剧本(脚本组件),他就知道该如何移动、说话和战斗。
    • 给他一个碰撞体(Collider组件),他就有了物理体积,不会从舞台上掉下去。

因此,在Unity中:

  • 一个GameObject本身什么都不是。
  • 是附加在上面的Component赋予了它身份、外观和行为。
  • Transform组件是一个GameObject最基础的“属性”,决定了它在世界中的存在状态。

你可以随时通过 Inspector 窗口下的 “Add Component” 按钮,为选中的GameObject添加新的功能。

第四章:实践出真知——创建你的第一个动态场景

现在,让我们运用以上知识,亲手创建一个简单的场景。我们的目标是:一个深空背景,一颗行星,一艘玩家控制的飞船。

4.1 导入资源与设置文件夹
  1. 首先,我们需要一些图片素材(Sprites)。你可以在Kenney.nl等网站找到免费的2D素材,或者自己用画图工具简单画几个形状。
    所需素材:一张星空背景图(background.png)、一张行星图(planet.png)、一张飞船图(ship.png)。确保它们都是带有透明通道的PNG格式。
  2. Project窗口 中,右键点击 Assets 文件夹 -> Create -> Folder。创建一个名为 Art 的文件夹来存放我们的图片。良好的习惯从这里开始!
  3. 将你的三张图片文件从电脑磁盘直接拖入Unity的Project窗口的Art文件夹中。Unity会自动导入它们并生成对应的资源。
4.2 创建背景
  1. Hierarchy窗口 中右键 -> 2D Object -> Sprite。这会在场景中创建一个带有Sprite Renderer组件的GameObject。
  2. Inspector 中,将它重命名为Background
  3. 选中这个Background对象,在Inspector中找到 Sprite Renderer 组件。点击Sprite属性旁边的小圆圈图标,在弹出的选择窗口中,选择你导入的background图片。
  4. 现在背景可能大小不对。选择工具栏上的缩放工具(或按R键),在Scene视图中拖动控制柄将其放大,直至填满整个视图。你也可以直接在Inspector的Transform组件中修改Scale的X和Y值(例如改为10, 10, 1)。
4.3 添加行星
  1. 同样地,在Hierarchy中右键 -> 2D Object -> Sprite,创建一个新的Sprite对象。
  2. 重命名为Planet
  3. 在它的Sprite Renderer组件中,分配planet图片。
  4. 使用移动工具(按W键)缩放工具(按R键),在Scene视图中将它移动到背景的左侧,并调整到一个合适的大小。
4.4 创建玩家飞船并让其动起来

现在我们来创建最有趣的部分——玩家飞船。

  1. 创建第三个Sprite对象,重命名为PlayerShip,并分配ship图片。将它放在屏幕中间偏下的位置。
  2. 编写第一个脚本! 在Project窗口中,右键点击Assets文件夹 -> Create -> Folder,创建一个名为Scripts的文件夹。保持组织性!
  3. Scripts文件夹中右键 -> Create -> C# Script。将其命名为PlayerMovement
  4. 双击这个脚本文件,它会在Visual Studio中打开。

你会看到Unity已经为你生成了一些基础代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}
  • public class PlayerMovement : MonoBehaviour 这行代码定义了一个类,它继承自MonoBehaviour所有挂载到GameObject上的脚本都必须是MonoBehaviour的子类。
  • Start()函数:只在游戏对象被创建时的第一帧之前调用一次。用于初始化。
  • Update()函数:每一帧都会被调用。游戏逻辑,尤其是需要持续监测的输入和移动,基本都写在这里。

让我们修改代码,让飞船可以用键盘左右移动:

public class PlayerMovement : MonoBehaviour
{
    // 这是一个公共变量,用于控制移动速度
    public float moveSpeed = 5f;

    // Update is called once per frame
    void Update()
    {
        // 1. 获取玩家输入
        // Input.GetAxis("Horizontal") 会返回一个-1(左)到1(右)之间的值,0表示没有输入
        float horizontalInput = Input.GetAxis("Horizontal");

        // 2. 计算移动方向
        // 我们只想在X轴上移动,所以Y和Z轴设为0
        Vector3 movement = new Vector3(horizontalInput, 0f, 0f);

        // 3. 根据时间和速度应用移动
        // Time.deltaTime是上一帧到当前帧的时间间隔,使其移动与帧率无关,更加平滑
        transform.Translate(movement * moveSpeed * Time.deltaTime);
    }
}
  1. 保存脚本(Ctrl+S),切换回Unity编辑器。Unity会自动编译脚本。
  2. 将脚本附加到游戏对象上:在Hierarchy中选中PlayerShip对象,然后将Project窗口中的PlayerMovement脚本拖拽到Inspector窗口PlayerShip的组件列表里。你也可以点击Inspector最下方的Add Component,搜索PlayerMovement并添加。

恭喜!你刚刚为你的游戏对象添加了第一个自定义行为!

  1. 测试游戏:点击顶部工具栏的播放按钮(三角形)。现在,试着按下键盘的A/D键左右方向键,你的飞船应该会在屏幕底部左右移动了!
  2. 再次点击播放按钮停止测试。
4.5 完善场景:添加摄像机边界

你会发现飞船可以无限地移出屏幕。我们需要限制它的移动范围。我们将通过脚本获取主摄像机的边界信息来实现。

修改PlayerMovement脚本:

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;
    // 添加一个变量来控制玩家在X轴上的移动限制
    public float horizontalLimit = 8f;

    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        Vector3 movement = new Vector3(horizontalInput, 0f, 0f);
        transform.Translate(movement * moveSpeed * Time.deltaTime);

        // 限制玩家的X位置,不让其超出屏幕边界
        // Mathf.Clamp函数将值限制在min和max之间
        Vector3 currentPosition = transform.position;
        currentPosition.x = Mathf.Clamp(currentPosition.x, -horizontalLimit, horizontalLimit);
        transform.position = currentPosition;
    }
}

保存脚本,回到Unity。PlayerMovement组件现在多了一个Horizontal Limit的滑块字段。你可以直接在Inspector中调整这个值(比如设为8),直到飞船移动到你觉得合适的屏幕边缘为止。在Inspector中修改公共变量的值,是调试和配置参数最常用的方法。

第五章:总结与展望

你已经完成了什么?
在这一篇超长的入门指南中,你完成了从零到一的巨大跨越:

  1. 搭建了Unity开发环境。
  2. 熟悉了编辑器的核心界面(Scene, Game, Hierarchy, Project, Inspector)。
  3. 理解了Unity最核心的概念:GameObjectComponent
  4. 学会了导入资源和管理项目结构。
  5. 编写并附加了你的第一个C#脚本,实现了玩家输入和控制。
  6. 创建了一个简单的动态场景。

这些知识是万丈高楼的基石。你可能已经注意到,我们甚至还没有提到“物理”、“碰撞”、“动画”这些词。别急,这些将在下一篇中隆重登场。

下一篇预告:《第二阶段:核心机制入门 - 让世界拥有物理法则》
在下一篇文章中,我们将:

  • 为我们的飞船添加发射子弹的功能。
  • 引入Unity的2D物理系统(刚体Rigidbody2D、碰撞体Collider2D)。
  • 学习如何检测碰撞,当子弹击中行星时,让行星消失
  • 最终完成一个简单的交互式小游戏

练习与思考:

  1. 尝试在场景中添加更多行星或星星作为装饰。
  2. 试着修改PlayerMovement脚本中的moveSpeed公共变量,感受它在游戏运行时的变化。
  3. 探索一下,如何让飞船也能进行上下移动?(提示:使用Input.GetAxis("Vertical")

记住,探索和犯错是学习过程的一部分。不要害怕尝试,不要害怕看到红色的报错信息——解决它们,就是你成长的时刻。

欢迎来到Unity的世界,创造之旅,现在正式开始!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值