【博物纳新】2D破碎效果开源库测评

栏目: 软件资讯 · 发布时间: 6年前

内容简介:【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。更多精彩内容请关注:lab.uwa4d.comUnity 2D Destruction能帮助你快速实现2D元素的破碎效果,它是一个完全开源、精简易用的工具,作者提供了教学视频可以帮助你更快地使用它。

【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。

更多精彩内容请关注:lab.uwa4d.com

导读

Unity 2D Destruction能帮助你快速实现2D元素的破碎效果,它是一个完全开源、精简易用的工具,作者提供了教学视频可以帮助你更快地使用它。

效果展示

【博物纳新】2D破碎效果开源库测评

使用步骤

1.首先放置一个2D Sprite在场景中,添加一个Collider,比如Polygon Collider 2D,并去除Collider网格中自动生成的不必要顶点,让它看上去更合理一些(这里建议使用Collider2D Optimization小 工具 做自动顶点优化)。这里Collider网格的顶点会作为后续破碎效果的分割点。

2.给这个Sprite添加一个Explodable组件,它就是使Sprite可以破碎的关键脚本。

【博物纳新】2D破碎效果开源库测评

3.设置Explodable参数

  • Shatter Type:选择破碎的形状,Triangle或Voronoi。

【博物纳新】2D破碎效果开源库测评

  • Allow Runtime Fragment:开启游戏运行时碎片机制。
  • Extra Points:除Collider网格顶点之外的补充分割点,分割点越多,碎片越小。
  • Subshatter Steps:对子网格进行二次破碎效果。例如,如果将其设置为2,则您的精灵将被分块,然后每个片段将再被分块,然后这些片段将再次分段。一般不建议将其设置为2以上,通常1就足够了。
  • Fragment Layer:设置碎片的Layer。
  • SortingLayer:设置碎片的Sorting Layer。
  • Order In Layer:设置碎片的Order in Layer。

这里需要注意的是第一个选项,由于在运行时实时计算碎片形状会造成比较明显的CPU开销,因此不建议开启,以防造成运行卡顿的现象。

最后三项对于Layer的设置可以帮助你实现以下情景:希望破碎的碎片可以掉落到地面下;希望破碎的碎片不受其他元素(如子弹)影响;

最后还有两个浅显易懂的功能按钮,帮助你更便捷地操作使用它:

  • Generate Fragments:生成碎片。
  • Destroy Fragments:销毁碎片。

4.添加ExplodeOnClick脚本,使Sprite被点击时,触发破碎效果。至此,破碎效果就已经完成了。

扩展功能

作者提供了一个ExplodableAddon抽象类,会在Fragment会生成时自动调用这里的OnFragmentsGenerated方法,开发者可以自行继承这个类,对破碎效果进行功能扩展。

如工程中的Explodable Fragments就是一个使用范例,在Sprite上添加这个脚本,可使碎片发生二次破碎效果。

【博物纳新】2D破碎效果开源库测评

性能测试

UWA惯例,使用UWA GOT Online对这个效果进行一下性能测试。

准备几个测试对比版本:

【博物纳新】2D破碎效果开源库测评

1.版本A:对比版本,不带Explodable组件的石块Spritex5;

2.版本B:预生成版本,添加Explodable组件,预先生成Extra Points=20的Fragments的石块x5;

3.版本C:实时生成版本,添加Explodable组件,实时生成Extra Points=20的Fragments的石块x5;

得到了如下数据:

【博物纳新】2D破碎效果开源库测评

从数据可以看出,使用了Explodable组件的版本帧率是明显有下降的,而使用实时生成碎片方式的版本下降得更明显。接下来再具体看一下这些开销主要来自哪里。

1.逻辑代码对比:

【博物纳新】2D破碎效果开源库测评

2.渲染模块对比:

【博物纳新】2D破碎效果开源库测评

3.加载模块对比:

【博物纳新】2D破碎效果开源库测评

【博物纳新】2D破碎效果开源库测评

【博物纳新】2D破碎效果开源库测评

从以上数据可以看出:

1.版本C的自身逻辑中有一项SendMouseEvent耗时明显偏高,这是在点击时实时计算生成大量碎片导致的耗时。

2.版本B和版本C的透明渲染相近,都比版本A高出0.5ms左右,这是由于渲染碎片导致的。

3.版本C的Loading.UpdatePreloading加载耗时则高于另外两个版本,这是由于在实时生成碎片时会调用Resources.UnloadUnusedAssets()方法导致的。

注意事项

1.示例工程使用的是Unity5.3.1f1版本。

2.请注意,由于工具中生成的碎片都是脚本生成的网格物体,不支持保存成Assets,因此无法作为Prefab被保存下来,目前只能通过预先在场景中摆放或实时生成碎片的方式来实现效果。

3.由于测试环境、机型、版本等多项不可控因素,本文的测试数据仅供参考,请开发者自行根据项目及使用情况再做测试。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

D3.js in Action

D3.js in Action

Elijah Meeks / Manning Publications / 2014-3 / USD 44.99

Table of Contents Part 1: An Introduction to D3 1 An introduction to D3.js 2 Information Visualization Data Flow 3 D ata-Driven Design and Interaction Part 2: The Pillars of Information......一起来看看 《D3.js in Action》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具