内容简介:【博物纳新】是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可破坏开源库测评
- 【博物纳新】超级变变变,万人同屏开源库推荐!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!