那些你不得不用的好插件

在手机上插入电影已经是当下非常普及的需求了,在比较了各种视频集成插件后,我们认为Mobile Movie Texture能实现非常不错的效果。它的特点在于:

功能比较丰富,支持播放、暂停,播放点拖动等操作。

性能非常高效。如下图,在红米2只要1.16ms即可完成整个函数的调用,非常快速。

** **

支持透明区域分离 。在如下的爆炸视频中,Mobile Movie
Texture将Alpha通道剔除,使得视频本身能更好地和背景融合。该剔除总耗时1.86ms,即使在每帧都有个decode的情况下,总耗时基本上依然不会超过2ms。

虽然该插件目前仅支持Ogg和Ogv格式,但是我们可以通过工具把其他格式转换成Ogv格式导入Unity使用。

注意 :和所有视频插件一样,Mobile Movie Texture也不支持URL播放,如优酷的URL是不支持的。

Dynamic Bone

为了增加角色运动的真实代入感,我们常常需要某些主体的附属物能跟随主体的运动自然地发生变化,如头发、衣服的运动等,这时候Dynamic
Bone就能满足我们的需求,从而避免了美术设计师费时费力地重复工作,并且性能表现非常高效。该插件是源码开放的,适合移动设备。

如下图,该插件的使用非常简单,开发者只需要在此设置一些根节点等相关参数。原理也不难理解:对于每个附属物体,获取骨骼根节点和控制节点的Transform信息。根据这两个结点信息,根据设定参数将运动传播出去。

** **

** **

Magic Splitscreen

随着电视游戏走入寻常百姓家,两人甚至多人同屏游戏的需求已经相当普遍,如赛车、枪战类等游戏。这时候我们就希望游戏能达到自动分屏的效果,Magic
Splitscreen恰能满足这点。

该插件支持多个Player分屏(图例是两个),开发者只要选定分屏的Camera、主camera以及设定Trigger
Distance(距离多远的时候分屏)等参数,即可达到分屏效果。

该插件的工作原理:当镜头拉远的时候,去创建一个Camera去渲染另一个物体,比如创建了一个分相机并调整它的透视矩阵,该矩阵根据距离的远近选择合适的角度去切这个场景,将得到的结果以Mask的形式贴到原来的主Camera上,从而实现这样的效果。

Unity-AssetBundle可视化构建工具

Unity 全球技术支持部门制作了一些实用的小工具免费供大家使用,此前已为大家推荐了用于批量处理资源文件的Asset
Auditing
。今天要给大家推荐的是一款名叫AssetGraph的插件,可以帮助开发者方便地定制AssetBundle构建规则并进行可视化的管理。

项目介绍

在Unity
5.x中构建AssetBundle的流程已经比4.x时代大大简化,开发者不用在资源的依赖关系上花费太多时间,但是在实际大型项目中,开发者可能会发现仅靠引擎自带的功能对AssetBundle进行管理还有不太方便的地方。例如:如果希望为不同平台对AssetBundle的构建设置不同的规则(包括打入AssetBundle内的资源,资源的导入设置等),那么开发者可能会在两套不同方案的切换中花费不少的时间,或者需要自己编写一套对应于项目需要的AssetBundle打包工具。鉴于此我们开发了AssetGraph,让开发者可以根据实际需求可视化地定制AssetBundle打包规则并有效地进行管理。

使用方法

添加节点

打开AssetGraph窗口,在AssetGraph的画布上点击鼠标右键会弹出可以添加的节点列表,每个添加的节点都可以在其Inspector中设置对应的属性值。而首先要添加的是Loader节点,这个节点用来指示哪个文件夹下的Assets会作为Output输送给接下来的节点以进行设置或过滤直至最后打入AssetBundle中。

** **

连接节点

当创建了两个以上的节点时,可以通过点击并拖动节点上的小圆点到另一个节点上来创建两个节点之间的link,这时一个节点的Output即成为另一个节点的Input。通过点击link,我们可以在link的inspector窗口中实时查看此时通过此link的Asset。

** **

设置节点属性

通过点击一个节点,你可以在其inspector窗口中设置你所需要的AssetBundle构建规则属性。例如Filter节点允许你设置Asset的过滤规则,而Importer节点则允许你设置需要应用到这个节点的Input
Assets上的导入设置。

** **

构建AssetBundle

最后只要点击AssetGraph上的Build按钮,就能构建出基于你所设定规则的AssetBundle了。如此,AssetGraph让你可以简单方便地管理不同的构建需求并通过可视化界面实时验证结果是否正确。

节点介绍

Loader

Loader定义了Asset的最初源头,你可以指定一个根目录(也可以指定Assets/外部的目录)

IN: 无

OUT:指定目录下的所有Asset

** **

Filter

Filter用于过滤输入的Asset,你可以在inspector窗口中设置多条过滤的规则。

IN: 上个节点输出的Asset

OUT:符合过滤规则的Asset

** **

Importer

Importer可以重载输入Asset的导入设置(注意只是在构建AssetBundle的时候改变了导入设置,原来的导入设置其他时候仍然生效)

IN:上个节点输出的Asset

OUT:应用了所设导入设置的Asset

** **

Grouping

Grouping可以根据设定的关键字把输入的Asset进行分组,而“*”星号可以作为关键字的一个通配符。

IN:上个节点输出的Asset

OUT:根据关键字设置的Asset分组列表

** **

** **

Prefabricator

Prefabricator可以把输入的Asset创建成Prefab。可以通过扩展AssetGraph.PrefabricatorBase类来定制自己的Prefab创建方式,具体代码示例请参见项目GitHub说明页面。

IN:上个节点输出的Asset

OUT:包含了新生成的Prefab的Asset(Prefab被分配在对应的group中)

** **

Bundlizer

Bundlizer用来把输入的Assets指定到特定的AssetBundle中并设置AssetBundle的命名,其中“*”星号可以适配Grouping节点的通配符。

IN:上个节点输出的Asset

OUT:包含了输入Asset的AssetBundle

** **

BundleBuilder

BundleBuilder用于实际构建AssetBundle。通过使用Bundlizer和BundleBuilder,你可以同时构建带有不同设置的AssetBundle(比如说压缩及非压缩)。

IN:上个节点输出的AssetBundle

OUT:构建出来的AssetBundle文件

** **

Exporter

Exporter可以把输入的AssetBundle或Asset文件保存到指定的文件夹中(可以指定Assets/外部的目录)。

IN:上个节点输出的Asset或AssetBundle文件

Unity实用小工具:Asset-Auditing

Unity Global Support部门制作了一些实用的小工具免费供大家使用,今天要推荐的就是用于批量处理资源的小工具:Asset Auditing。

Unity Global
Support部门主要负责对使用Unity引擎的企业级VIP客户提供技术支持,大中华区已实现全面覆盖,目前包括腾讯,网易,巨人,完美世界等公司已属于Unity的企业级VIP客户。

Asset Auditing主要用于执行各资源的审核工作,比如导入贴图时按照统一既定格式进行批次设置,简单易用,且具有高度可扩展性。

今后Unity中国区Github也会免费提供一些常用的开发工具。

项目介绍

在开发Unity项目的时候,很多开发者都会遇到资源管理的问题。比如因为一些疏忽,你可能忘记把一张超大的4096分辨率的贴图设置成压缩格式,另外也有可能不小心把Mesh文件设置成了Read/Write模式。靠人工来检查资源的导入设置往往是不靠谱的,因此我们开发了一个小工具,你可以用它来监督所有资源的导入设置,减少因为不正确的导入设置带来的问题。

导入设置

在Unity中,所有要导入到引擎的资源都有各种不同的导入选项。这些选项用来调整资源的属性、导入精度、以及压缩方法等等。某些设置还会包含一些重要的平台相关的选项。比如在iOS平台,你所使用的纹理有可能需要和Android平台使用不同的设置,如果使用手工来管理这些设置会是非常困难的,可能会导致很多错误。因此,通过自动化的管理工具来执行这些操作是一个非常必要的方式。

如下图所示,这是一张纹理的导入设置:

实现方法

Unity引擎提供了资源导入的回调函数,这些回调函数是通过AssetPostprocessor
API来实现的。AssetPostprocessor中的这些函数会按照一定的顺序执行,它们的执行顺序如下:

OnPreprocess
是导入过程中最早执行到的,你可以在这里重新指定新的导入设置。我们在工具中会设置相同类型的资源使用统一的设置就是在这里完成的。

一旦模型和材质导入完成之后,引擎会根据资源内的数据创建GameObject层级。每个GameObject会拿到它对应的MeshFilter、MeshRenderer、MeshCollider组件等等。在把材质赋值给MeshRenderer之前会调用
OnAssignMaterialModel 函数。

在GameObject初始化MeshRenderer和用户数据之后,
OnPostprocessGameObjectWithUserProperties 会被调用。这会在它的子GameObject生成之前调用。

如果前面没有禁止动画生成设置的话(请查看ModelImporter.generateAnimation),接下来会生成SkinnedMesh和Animation。如果可能的话,Avatar也会被创建出来并且执行GameObject的层级优化,然后会调用
OnPostprocessModel 函数。

对SpeedTree资源来说会调用 OnPreprocessSpeedTreeeOnPostprocessSpeedTree
函数,这和OnPreprocessModel以及OnPostprocessModel函数是类似的。

使用方法

正确使用该工具,大致分为以下步骤;

一、将AssetAuditing工具导入到工程。

二、创建资源导入格式文件。

点击Unity编辑器的Assets/Create Asset Auditing Rule菜单,在编辑器的Project窗口里会创建一个New Asset
Rule文件。如下图所示:

在上图中,Asset Rule Type包括Any,Texture,Mesh三个选项。TEXTURE
SETTINGS下属内容对应贴图属性信息,即所有对应的Texture都将应用该面板中的属性设置。例如勾选下方的Generate Mip
Maps则表示所有的Texture都将生成Mip Map。MESH
SETTINGS下属内容对应网格的属性信息,即所有对应的Mesh都将应用该面板中的属性设置。

相应信息设置完毕后,只要点击Apply按钮就会对相应的资源类型执行相关的设置。

如果希望对该功能进行扩展,可以对Editor目录下的AssetRuleInspector脚本进行简单修改,以达到实际需求。

三、设置导入参数。

导入格式文件跟其所在的文件夹相对应,如下图所示,Texture目录下对应的贴图都会统一采用Texture Rule格式文件所设置的属性信息:

同理,如果需要设置模型数据的导入格式,则如下图所示,只需要在模型文件所处的文件夹下存储一份格式文件即可:

设置完参数后请点击Apply按钮,然后工具会自动化处理相关的资源文件,将他们的导入设置按照配置文件的内容进行统一设置,并且重新导入资源文件。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×