内容简介:【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。更多精彩内容请关注:lab.uwa4d.comUnity 2D Destruction能帮助你快速实现2D元素的破碎效果,它是一个完全开源、精简易用的工具,作者提供了教学视频可以帮助你更快地使用它。
【博物纳新】是UWA重磅推出的全新栏目,旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。
更多精彩内容请关注:lab.uwa4d.com
导读
Unity 2D Destruction能帮助你快速实现2D元素的破碎效果,它是一个完全开源、精简易用的工具,作者提供了教学视频可以帮助你更快地使用它。
效果展示
使用步骤
1.首先放置一个2D Sprite在场景中,添加一个Collider,比如Polygon Collider 2D,并去除Collider网格中自动生成的不必要顶点,让它看上去更合理一些(这里建议使用Collider2D Optimization小 工具 做自动顶点优化)。这里Collider网格的顶点会作为后续破碎效果的分割点。
2.给这个Sprite添加一个Explodable组件,它就是使Sprite可以破碎的关键脚本。
3.设置Explodable参数
- Shatter Type:选择破碎的形状,Triangle或Voronoi。
- 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上添加这个脚本,可使碎片发生二次破碎效果。
性能测试
UWA惯例,使用UWA GOT Online对这个效果进行一下性能测试。
准备几个测试对比版本:
1.版本A:对比版本,不带Explodable组件的石块Spritex5;
2.版本B:预生成版本,添加Explodable组件,预先生成Extra Points=20的Fragments的石块x5;
3.版本C:实时生成版本,添加Explodable组件,实时生成Extra Points=20的Fragments的石块x5;
得到了如下数据:
从数据可以看出,使用了Explodable组件的版本帧率是明显有下降的,而使用实时生成碎片方式的版本下降得更明显。接下来再具体看一下这些开销主要来自哪里。
1.逻辑代码对比:
2.渲染模块对比:
3.加载模块对比:
从以上数据可以看出:
1.版本C的自身逻辑中有一项SendMouseEvent耗时明显偏高,这是在点击时实时计算生成大量碎片导致的耗时。
2.版本B和版本C的透明渲染相近,都比版本A高出0.5ms左右,这是由于渲染碎片导致的。
3.版本C的Loading.UpdatePreloading加载耗时则高于另外两个版本,这是由于在实时生成碎片时会调用Resources.UnloadUnusedAssets()方法导致的。
注意事项
1.示例工程使用的是Unity5.3.1f1版本。
2.请注意,由于工具中生成的碎片都是脚本生成的网格物体,不支持保存成Assets,因此无法作为Prefab被保存下来,目前只能通过预先在场景中摆放或实时生成碎片的方式来实现效果。
3.由于测试环境、机型、版本等多项不可控因素,本文的测试数据仅供参考,请开发者自行根据项目及使用情况再做测试。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 【博物纳新】Procedural开源库合辑
- 【博物纳新】Isaura—光环特效开源库评测
- 【博物纳新】水面涟漪反射效果开源库测评
- 【博物纳新】2D开源库合辑推荐
- 【博物纳新】NVIDIA可破坏开源库测评
- 【博物纳新】超级变变变,万人同屏开源库推荐!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!