AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Unity3D

Unity4.3 2D教程:入门实战(七)

51自学网 2014-05-24 http://www.51zixue.net

Unity4.3 2D教程:入门实战(七)

这将是一个系列教程,将探索Unity2D原生2D工具的使用

精灵封装(Sprite Packing)-仅针对专业人员.

注:本节介绍的功能,只适用于Unity Pro中.你仍然可以在Unity free版本中直接使用一个纹理图集,可它需要你用不同的工具来创建生成纹理图集的图片文件.你同样可以在运行时将一些精灵压缩为图集切片,但是它会令你 组织和使用资源变成很不直观的,因此我们这里不介绍这种方法.

Stats button in Game view control bar

播放游戏,并点击游戏视图顶部控制栏的Stats按钮查看渲染状态信息,如下图:

Game view stats showing no batching

请注意,现在场景中因为没有进行配料(batching)优化,所以Draw calls看起来很多.

当然,Draw calls现在是正常的,因为现在场景里渲染了四个精灵,每一个精灵都用了一个独自的材质球.虽然现在只有四个draw calls,但真正的游戏中随着场景中对象和效果的增加,这个draw calls数也会增加,太多的draw calls会降低游戏性能,所以我们要仔细的组织精灵纹理,幸运的是有个基本的方法来帮助我们优化draw calls,就是将零散的精灵图片转换成精灵纹理图集.纹理图集(texture atlases)是由若干个小纹理组成的大纹理贴图,用于优化渲染时GPU的调用,这不是新技术,以前要我们用第三方工具或者手工创建它,而现在Unity可以帮我们自动创建它.

注:在Unity4.3.2版中的Sprite Packing仍处于开发者预览模式.

为了将精灵合并到图集里,首先需要修改其导入设置.

在Project视图中找到cat.png并打开Import Settings,这里注意名为Packing的标签属性. Packing标签用来定义精灵加入到纹理图集后的名称,可以是任何你想要的字符串.

在Packing标签中输入它的名字”toons”:

packing_tag_set

然后点击应用按钮保存设置,用同样的方法将enemy和zombie也命名一下.

然后从”WindowSprite Packer”菜单中打开”Sprite Packer”,如果是4.3.2版本,有可能是” WindowSprite Packer (Developer Preview)”这样的菜单,那么将会显示下面这样的错误提示:


 

Sprite Packing disabled message

正如你所见默认是禁用Sprite packing的,我们到”EditProject SettingsEditor”中把Sprite Packer的模式选为”Always Enabled”,像下图这样:


 

editor_settings_sprite_packer

当选择”Always Enabled”后,你可以在build时候看到一个”only packing your Sprites for builds”选项.

再次从”WindowSprite Packer”菜单打开Sprite Packer窗口,如下图:

Empty Sprite Packer window

黄色的文字是提醒你用的是一个功能的预览版.以后正式版就不会看到这个提醒文字了.

在这个窗口的左上方点击Pack按钮,你会看到精灵都排列在窗口里了,如下图:

toons atlas in Sprite Packer

再次运行游戏到游戏视图查看运行状态信息,你将看到现在只用了两个draw calls,比原来省了两个.

Game view Stats with batching

这样做的好处是显而易见的,精灵共享使用了材质球,优化了性能,同时做这个优化如此简单,何乐不为.

Sprite Packer的选项和问题

Sprite Packer窗口顶部包含一个控制栏,如下图:

Sprite Packer control bar

1:视图中看到的是目前的图集.第一个下拉菜单是你使用过的Packing标签名称.可以选择它查看它的内容.
2:如果Sprite Packer帮你整合图集超过一张图,你需要通过第二个下拉菜单切换其它图集.
3:默认精灵在图集中的分配方法是按照DefaultPackerPolicy进行的,可以通过调整DefaultPackerPolicy来自定义分配方法,不过这个高级功能本教程就不介绍了.

有时候Unity会将我们本来要整合到一个图集拆分创建成多个地图集,并把名字加了序号.造成这个问题的原因是精灵纹理压缩格式不同.

例如:zombie.png我们设置的是16位颜色(16 bits),而enemy.png和cat.png是用的压缩格式(Compressed),那么Unity整合图集时,将会创建出两个图集,名称分别 是”toons (Group 1)”和”toons (Group 2)”:

toons atlas divided into groups

尽管这三个精灵有相同的Packing标签,但Unity仍旧创建了多个图集.为了确保图集最优化,我们要确保准备整合到同一个图集中的精灵的压缩格式相同.

正常情况下,将尽可能的减少精灵图集的总数,除非精灵太多,一张图集存不下,Unity会再次自动拆分图集,我们要用Packing标签合理安排精灵归属,尽可能做到精灵图集的最优化.

好了,本教程到此结束,可以从这里下载到完成的项目源码:(http://cdn5.raywenderlich.com/wp-content/uploads/2014/01/ZombieConga-Part1-complete.zip),官方出的中文字幕版2D工具视频教程:http://v.youku.com/v_show/id_XNjQxNDk0MTg4.html


 

原文链接:http://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started

本部分文字翻译来源:http://blog.1vr.cn/?p=1422


建议使用电驴(eMule)下载分享的资源。

说明
:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 
上一篇:Unity4.3 2D教程:动画控制器(1)  下一篇:Unity4.3 2D教程:入门实战(六)