本文由 祝你万事顺利 出品,转载请注明出处。
官方文档(英文),2D Animation 在2019.3已经是正式发布的包了。此资源包是将Assets Store 中的Anima2D进行了整合,在老版本中可以使用Anima2D。
简介
2D Animation package目前只在2019.3以及更高的版本中支持
Adobe Photoshop PSB格式
PSD Importer package此包支持Adobe Photoshop PSB 格式,
PSD格式介绍 PSD–Photoshop Document(PSD),是著名的Adobe公司的图像处理软件Photoshop的专用格式。 这种格式可以存储Photoshop中所有的图层,通道、参考线、注解和颜色模式等信息。 在保存图像时,若图像中包含有层,则一般都用Photoshop(PSD)格式保存。
PSB:大型文档格式(PSB) 大型文档格式(PSB) 支持宽度或高度最大为300,000 像素的文档。 PSB 格式支持所有Photoshop 功能(如图层、效果和滤镜)。 目前,如果以PSB 格式存储文档,则只有在Photoshop CS 中才能打开该文档。
准备和导入美术资源
在美术人员设计角色的时候最佳的做法是将角色的不同部位放到不同的图层(图1)。PSD Importer将自动分配不同的图层到Sprite Sheet layout
PSD Importer将将根据PSB源文件自动生成Prefab(图2)。
Importer 设置
1.将图片保持那位PSB格式
2.PSB图片导入Unity通过PSD Importer
3.检视面板中设置如下:
Skinnin Editor模型
选中导入的资源点击SpriteEditor将进入Sprite Editor窗口。
在Sprite Editor窗口中下拉菜单中选择Skinning Editor,Skinning Editor将是创建动画骨架和骨骼的主要工具。
选中一个精灵
1.双击选中一个精灵图片
2.如果有多个精灵图片叠加在一起,不断双击将在这些精灵图片之间循环
3.双击空白区域取消选择
骨骼和网格节点
1.点击骨骼或网格节点选中它
2.一次框选多个骨骼或者节点
3.右键取消选中的骨骼或网格节点
角色操控
以下步骤将创建一个角色的骨骼和骨架
1.通过Create Bone工具创建角色骨架的骨头
2.所有骨骼创建完成后,生成为Sprites生成Mesh网格,使用Auto Geometry工具自动生成精灵图片的网格。通过CreateVertex和CreateEdge重调网格
3.选择Bone Influence工具,双击精灵图片查看骨骼对精灵图片的影响。通过’-‘或者’+'可以添加其他骨骼
4.权重附加在顶点上影响骨骼和精灵图片的权重。使用Auto Weights工具自动权重,通过Weight Brush和Weight Slider可以重新定义权重。
5.通过Preview Pose工具进行骨骼操作的测试
动画
完成角色的骨骼后就可以进行动画的创建了,将完成的资源放入场景中,之后就可以进入Unity animation的工作流程。
Sprite 替换
Sprite 替换让我们可以更换游戏物体的Sprite,同时保持骨骼和动画片段。这样可以快速创建大量外观不同但是动画模组一样的角色。
我们可以使用Sprite 替换切换Sprite在每一帧的显示。
通常实现Sprite替换的工作流:
- 创建和设置Sprite Libray Asset
- 添加一个Sprite Library component 和 Sprite Resolver component到需要Sprite替换的游戏物体。这个游戏物体必须包含Sprite Renderer组件。
Sprite Library component将引用一个Sprite Library Asset,Sprite Resolver component此组件将请求在Sprite Libray Asset注册的Sprite,并通过Category和Label来确定是哪个Sprite。
Sprite Library Asset
通过category将Sprite进行分组。这将允许创建更小的Sprite组。比如我们可以创建一个Weapin组,在组中添加Labels ‘Saber’,‘Bat’,‘Blade’,‘Axe’。
通过 Assets > Create > Sprite Library Asset.创建一个Sprite Libary Asset。
Sprite Library component
Sprite Library组件将Sprite Library Asset和游戏物体联系起来。这将让我们可以获取到Sprite Library Asset中全部Sprites,并将它们通过Sprite Renderer显示在游戏物体中。
Sprite Resolver component
Sprite Resolver将设置在Sprite Library component组件中的Sprite Library Asset的全部信息拉取下来。它将自动将选中的Sprite应用到Sprite Renderer。这样我们可以在运行时切换Sprite。
Sprite Swap 和 2D Animation 整合
Asset 生成步骤
以下是Sprite Swap components生成的各个步骤
1.当使用PSD Importer导入PSB file的时候,Unity生成一个Prefab和一个Sprite Library Asset作为这个Prefab的附加资源。
2.对于不属于任何分类或者第一个标签的在Prefab中的Sprite,Unity将创建一个GameObject。
3.Unity将属于同一个类的全部Sprite GameObjects全部附加Sprite Resolver component
4.Unity之后将附加Sprite Library component到根节点,这个组件将和第一步中的Sprite Library Asset建立引用联系。
Editor 整合
Skinning Editor的Sprite Visibility面板有两列,可以在这里设置Category和Label给选中的Sprite。
1.给Sprite分配一个Category
2.创建一个新的Category,在同一个Library Asset下名称需要是单独的。
3.输入Category名称的时候,Unity将分配一个Label给Sprite基于Sprite名称。在同一个Category中Label必须是独特的。
Context Menu Shortcuts
右键点击Sprite Visibility panel的一行。
如果点击的是一组Sprites的根,可以选择Convert Group to Categoty,Unity将创建一个新的组和这个根节点的名称相同。Convert Layer to Category选择这个选项将自动生成Label名称和Sprite名称相同。Clear All Category清除选中的全部Sprite的现有分组。
精灵图片切换和骨骼动画限制
为了确保在骨骼动画中的精灵图片切换正确,动画骨骼配置需要在Sprites切换的时候相应是相同的。使用Copy and Paste功能将相同的bones和Mesh data从Sprites复制到另一些相关的Sprites。
Sprite Swap Manual Setup
1.创建一个Sprite Library Asset
2.选中创建好的在监视面板中查看
3.选择plus(+)在Sprite Library Asset中添加一个新的Category
4.创建一个游戏物体添加Sprite Renderer组件
5.给此游戏物体添加Sprite Library组件,并给给其分配第三步中设置的Sprite Library Asset。
6.给此游戏物体添加Sprite Resolver组件
7.选择Category中的下拉菜单,选择想在此游戏物体上应用的组。如果此组中存在Sprites,则将出现Label的下拉菜单,可以通过Label选择当前Sprite Renderer中要显示的Sprite。
使用实例
帧动画
通过帧动画在运行的时候通过Sprite Swap可以快速的切换Sprites。对一些简单的动画这将很有帮助,比如闪现的效果。
工作流:
1.将每一帧需要的Sprites放到Sprite Library Asset,将他们分配到同一组下。给每个Sprite不同的Label。
2.选择角色的预制体,将其放入场景中。为其创建Animator和Animation
3.打开Animation窗口,选择角色预制体。选择Add Property按钮,选择Sprite Resolver component的LabelHash属性。
4.在Animation窗口中改变每一帧的LabelHash,也就是在关键帧中选中这一帧需要的Sprite
改变关键帧切线:(此Bug已修复)
这里要将关键帧切线设置成Constant。This is because the Sprite Resolver component uses the defined string hash value to locate the desired Sprite. If the values between keyframe’s are interpolated, the Sprite Resolver will not be able to resolve to the correct Sprite.
改变角色的某一部分
1.在PS中将想要替换的部分放到一个组中
2.在Skinning Editor中给他们分配Category和Label,这里分配完成后要按Apply,这样才会自动生成Sprite Library Asset。
3.在游戏场景中将Prefab添加,在prefab中添加了组的节点添加一个Sprite Resolver组件,在这里可以选择要替换的的Sprite
Swapping Sprite Library Assets
在Sprite model需要替换的sprite很多的时候,通过上面组的方式需要替换的Sprite可能非常多。这种情况我们可以创建一个新的Sprite Libray Asset,这样在Sprite Library component组件中通过替换Sprite Library Asset来实现大量的替换。
以下是设置一个新的Sprite Library Asset的工作流:
1.首先在PS中创建两个版本的Sprites。这里举例一张彩色,一张灰色
2.将PSB文件导入Unity,将产生Prefab。
3.在Skinning Editor中将角色每一个部分单独设置一个Category
4.要确保两边的Sprite部分有相同的Category和label
5.将彩色角色的Prefab放入场景中。
6.接着将灰色角色的Sprite Library Asset拖入Sprite Library Asset来替换原有的Asset,原有的彩色角色现在将全部替换为灰色的