游戏开发实用技巧大汇总

2021-03-15
3519
0

Unity作为一个广泛使用的游戏引擎,在2D游戏中表现非常出色。在本文中,unity的2D技术产品经理Ruth Scammell和2D产品营销经理Eduardo oriz将介绍制作2D游戏的实用技巧,以帮助开发人员快速入门并高效完成开发。

 

2D 项目模板

 

 

2D 项目模板非常适合作为 2D 项目的参考。模板可在 Unity Hub 中下载,其包含了一些特色 2D 内容:

 场景默认为 2D 视角,带有正交投影、纯色背景的摄像机
 编辑器默认设置为 2D 模式,纹理将作为精灵(Sprites)导入
 禁用了实时全局光照(RTGI)

 预装了 2D 所需软件包,包括 2D Animation、2D Pixel Perfect、2D PSD Importer、2D SpriteShape 及其它依赖项

 

 

自 Unity 2020.2 开始,2D 菜单选项成为了创建 GameObject 和 Asset 时的上级菜单选项,其中还将添加一组用于快速制作原型的原始 2D 精灵,同时SpriteShape 和 Pixel Perfect Camera 等新功能的菜单也会陆续加入。

 

 

精灵单位像素自定义

 

每单位像素(Pixels Per Unit, PPU)是 2D 开发的一个重要概念,精灵的 PPU 决定了图像长宽对应的空间单位占有多少个像素。

 

精灵的 PPU 应是开发的首要考虑之一。除了像素密度外,PPU 还会影响精灵渲染器(Sprite Renderer)的绘制模式、精灵在块图(Tilemap)等其他系统中的应用等等。合理的开发应该根据游戏需求与目标平台来确定像素密度,并尽量避免使用不必要的大型纹理。

 

 

2D PSD 导入器

 

2D PSD 导入器可将带图层的 Adobe Photoshop PSB 文件导入 Unity,让开发者可使用马赛克(Mosaic)等功能根据导入的图层和角色骨架自动生成精灵表单(Sprite Sheet)。在生成后,Unity 会将角色精灵重新组合、保存至源文件中。导入器的作用在于帮助引擎更好地兼容 2D Animation 系统与多图层角色设计流程。

 

 

减少像素重叠

 

它的功能是为了减少颜色被绘制到屏幕上的次数。在过去,半透明像素的颜色必须在最后的操作中考虑。过多的重叠像素会降低GPU的性能,使图像在低端设备或高帧速率下不尽如人意。通常场景中的所有精灵都被视为透明像素,因此我们需要一些方法来减少过度渲染以提高性能。

 

Unity 可以在精灵遮罩(Sprite Mask)划定的范围内允许过渡绘制。当遮罩设为方形时,整个方形区域都将允许过渡绘制,但如果网格类型(Mesh Type)设置为了紧缩(Tight),则生成的遮罩会跟随精灵的轮廓,忽略空白,从而减少过度绘制的区域。若想要更好地控制遮罩网格的轮廓,可在精灵编辑器内修改相关设定。

 

 

减少过渡渲染的另一种方法是合并重叠的静态精灵。不参与视差的精灵仍然可以在关卡设计后合并。

 

 

组合碰撞体

 

当场景中存在多个附带静态 2D 碰撞体的精灵时,可使用 Composite 2D Collider 组件将多个碰撞体组合成一整个对象,减少计算负担,简化碰撞运算,让表面碰撞更加流畅。上图中的紫色图块便被用作了碰撞体,Composite Collider 可与 Tilemaps 一起使用,在添加组件选项中选择 Composite Collider、勾选 Composite 后便可启用功能。

 

Composite 2D Collider 也可以与父级 GameObjects 一起使用。为此,我们需要勾选碰撞体的 Used by Composite 选框来启用子碰撞体。当然,还有一种优化碰撞体的方法是手动绘制一个能覆盖 GameObject 的简单多边形。

 

 

块图渲染器

 

每个 GameObject 附带的渲染器(如精灵渲染器)都会占用部分运算开销。当场景中包含了多个静态精灵,若想提高画面性能、让游戏设计更加快捷,可使用块图渲染器(Tilemap Renderer)。单个块图渲染器可以渲染上百个精灵。当场景中有大量无需排序的精灵时,可使用块图大图块模式(Tilemap Chunk Mode)来降低精灵的 CPU 和内存占用,该功能在低端设备上尤为重要。将所有静态图块放在同一块图中,然后启用 Chunk 模式便能使用该功能。

 

注意,所有块图需要保存在同一张精灵图集(Sprite Atlas)中。块图可能无法在场景视图中正常显示,但在播放模式中会正确排序。显示问题的一种解决方法是在设计关卡时使用 Individual 独立图块模式,在发布时切换为 Chunk 大图块模式

 

如果精灵的排序必须准确,比如某个角色需要移动至图块的前面或后面,则可以使用 Individual 独立图块模式。对于需要移动或具有游戏功能的精灵,可使用 Regular 常规模式。

 

 

形状精灵烘焙

形状精灵(Sprite Shape)是灵活设计形状和关卡的 2D 工具。Sprite Shape API 默认允许在运行时修改样条线的节点(对性能有一定影响),如果无须在运行时修改精灵,则可以烘焙或缓存样条线的几何形状,提高图像性能。选择形状精灵控制器(Sprite Shape Controller),点击启用样条线编辑(Edit Spline)、缓存几何体(Cache Geometry)即可完成网格的烘焙。使用 Unity 2019 LTS 及以上版本时,要想在运行时修改样条线,可在包管理器(Package Manager)中安装 1.3 及以上版本的 Burst 软件包来极大提升图像性能。

 

 

使用形状精灵快速制作场景美术

 

Sprite Shape Profiles 具备常见矢量绘图软件类似的作画方法,可用于绘制游戏性和装饰性元素。功能适用于多种艺术风格、能快速填充大片区域,同时所需的资源更少。

 

 

平铺精灵与九宫格精灵

精灵渲染器具备的各种绘制模式可降低资源数据量大小、让关卡设计更加好玩。平铺精灵(Tileable Sprites)可生成多个带有同一精灵、不同大小的 GameObject。打开精灵编辑器,使用黄色把手将平铺部分框起来,应用设置后转到 GameObject,将精灵渲染器的绘制模式更改为平铺(Tile)模式。

 

九宫格精灵(9-slicing Sprite)具备图像清晰、比例随长宽变化的特点。功能的具体使用方法是在精灵编辑器中划分出平铺的主图块与不变的四个角,在绘制模式中选择切分(Slice)。

 

 

透明度排序模式

在设计 2D 游戏时,时常会出现多个 GameObject 处于同一排序层或顺序的情况,或者精灵要用多个排序层和逻辑才能达成正确的渲染顺序,但此类做法并不高效。此时,我们可以使用项目设置(Project Settings)下的透明度排序模式(Transparency Sort Mode)来告诉 Unity 正确的渲染顺序。Unity 将按照一个 Vector2 方向(以X和Y轴坐标表示)描述的顺序对精灵进行排序。

 

 

 

2D 动画

在 Unity 中制作逐帧动画片段很简单。在项目窗口选择创建一个精灵序列,拖入场景视图或层级视图中,Unity 将自动生成一个动画片段和一个 Animator。

 

要想在现有 Animator 上添加动画片段,只需将动画帧拖到Animator的 GameObject 上,片段将自动添加到 Animator 中。如果要为每个 Sprite 创建一个单独的 GameObject,可按住 Alt 键或 Option 键再将动画帧拖入层级视图。

 

 

逐帧动画与骨骼动画

 

Unity 同时支持逐帧动画与骨骼动画,两者间的不同点在于:

 

01  逐帧动画

 

 每帧被视作单独的精灵
 额外的动画需要用额外的精灵
 帧率与播放速度通常为固定的
 过渡动画须用额外精灵制作

 

 不支持2D反向动力学(2D IK)

 

02  骨骼动画

 

 动画帧由同个精灵生成
 动画片段由同个精灵生成
 可适应播放速度变化
 可用于制作过渡动画

支持 2D IK

 

 

Burst 对 2D 动画性能的提升

 

Burst/Collections 软件包可以优化带有大量骨骼的 2D 动画,带有大量顶点数的精灵网格,以及运行时的精灵变形动画。其原理是借助 Burst 编译与底层数组处理程序来加快引擎对精灵网格变形的处理速度。

 

若想启用Burst,请使用 Unity 2020.2 以及 2D Animation 5.0.x,安装 Burst 1.3.3 及以上版本并安装 Collections 预览包。

 

Burst 1.3.3 与 Collection 0.9.0-preview.6 是本次 2D Animation 中的受测版本

 

 

2D 动画自定义曲面细分功能

 

在预处理需要绑定骨架的精灵时,我们有对网格的完全控制。蒙皮编辑器(Skinning Editor)带有的自动曲面细分选项可以快速完成细分处理,而我们可借助网格工具来自定义细分配置,添加或移除顶点,制作出想要的网格。

 

 

2D 动画中的 2D 物理

 

为带骨骼的角色添加 2D 碰撞体和 2D 刚体组件可做到用 2D 物理系统驱动运动。在上方图示中,胶囊碰撞体(Capsule Collider)被添加到了每根骨骼及 2D 刚体组件上,碰撞体再借助铰链关节(Hinge Joint)连接,每个关节可设置运动限制角度,相邻关节的刚体组件也能设置是否相互碰撞。

 

 

像素美化与锐化

资源尺寸参考:32 像素每单位(PPU)

 

2D 游戏画面的开发关键点之一在于资源需要有一致的像素密度。如果项目中的像素密度为 32 PPU,则每个面积单位就应包含 32 个像素,类似上图左侧的图块。

 

默认的 2D 摄像机以镜头中心为原点、以垂直方向为单位来描述图像尺寸。比如在下方图示中,镜头的平行方向上可以塞下 10 个图块:

 

 

如果资源在加入场景视图时与参考图像相比显得过小,则很可能是由于分辨率不匹配。

 

Unity 默认的精灵 PPU 为 100,当我们将设置改为 32 PPU 后,精灵可能才会正常显示。

 

 

引擎默认会开启双线性过滤(Bilinear Filtering)来平整突出的边角,如果想要制作复古风的像素图像,可将过滤模式(Filter Mode)改为点(Point),在划定的屏幕空间内实现锐利的图像效果。

 

 

纹理导入预设

当项目需要导入大量资源时,一个个地去更改精灵的导入设置会非常耗时耗力。而创建一个导入模板或预设后,资源在导入时便能以预定好的配置导入。要创建模板:

 

 选中带有所需配置的资源
 点击 Sprite Asset 旁的 Settings 图标来创建模板
 以好记的名字保存

 将模板设为默认,新导入的资源便会自动应用该配置,Preset 资源可在 Project 视图中找到

 

 

在制作像素美术时,屏幕必须始终显示相同数量的像素,且所有像素的大小必须相等。为此,我们可以找到摄像机配置,添加像素完美相机(Pixel Perfect Camera),将资源 PPU 设置为像素图用到的参数。

 

在添加像素完美相机(Pixel Perfect Camera)组件后,组件会作用于播放模式的摄像机,如果启用了在编辑模式下运行模式(Run in Edit Mode),则效果在编辑器中便能查看。

 

 

在项目中,角色和对象可以改变位置、转向和尺寸。默认时变化插值会非常平滑,但如果想要保留PPU带来像素图像缺陷,可以启用纹理扩张(Upscale Texture)。GameObject 将以一个像素为单位扩张,转向与比例的变化也将遵守图像约束。我们之前也分享了更多有关制作8位(点击回看)和16位(点击回看)复古游戏的技巧。

 

 

生产力工具 2D 编辑器

排序层组(Sorting Groups):排序层组可为多个 2D 渲染器划分群组。排序层(Sorting Layer)与图层顺序(Order in Layer)的确可以确定单个角色的渲染顺序,但并不足以处理角色重叠时各部位互相交织的问题。

 

 

我们可为每个角色的根游戏对象设置一个排序层组,将所有的渲染器划分为一组。有了排序层组后,角色将不再交织,且会根据组顺序排序。排序层组适用于所有的 2D 渲染器以及粒子系统。

 

精灵图集(Sprite Atlas):精灵图集是指包含多个精灵的单张纹理。Unity 在使用纹理上的精灵时,不必多次绘制单独的精灵,只需绘制一次纹理即可,从而提高图像性能。

 

在生成精灵图集时,如果以文件夹作为图像源,则图集的内容可在制作过程中轻松地增减,我们只需修改文件夹内容即可。

 

 

我们还可以将不同大小或压缩比的sprite变体放入同一个sprite图集,并使用一种资源来满足不同平台的需求。

 

请根据自己的游戏使用地图册。Spirit atlas旨在平衡生产力、灵活性和性能。

 

 

转载声明:本文来源于网络,不作任何商业用途

免责声明:本文内部分内容来自网络,所涉绘画作品及文字版权与著作权归原作者,若有侵权或异议请联系我们处理。
收藏

全部评论

您还没登录

暂无留言,赶紧抢占沙发
绘学霸是国内专业的CG数字艺术设计线上线下学习平台,在绘学霸有2D绘画、3D模型、影视后期、动画、特效等数字艺术培训课程,也有学习资源下载,还有行业社区交流。学习、交流,来绘学霸就对了。
绘学霸iOS端二维码

IOS下载

绘学霸安卓端二维码

安卓下载

绘学霸微信小程序二维码

小程序

版权声明
本网站所有产品设计、功能及展示形式,均已受版权或产权保护,任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
热线电话
18026259035
咨询时间:9:00~21:00
在线客服
联系网站客服
客服微信:18026259035
公司地址
中国·广州
广州市海珠区晓港中马路130号之19
绘学霸客户端(权限暂无,用于CG资源与教程交流分享)
开发者:广州王氏软件科技有限公司 | 应用版本:Android:6.0,IOS:5.1 | App隐私政策> | 应用权限 | 更新时间:2020.1.6